Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb Meteor/Mongo-从模板中检索要在函数中使用的\u id_Mongodb_Meteor - Fatal编程技术网

Mongodb Meteor/Mongo-从模板中检索要在函数中使用的\u id

Mongodb Meteor/Mongo-从模板中检索要在函数中使用的\u id,mongodb,meteor,Mongodb,Meteor,我是编程新手,如果这看起来很明显,我深表歉意。在问这个问题之前,我已经花了好几个小时,所以我希望这是可以的 我正在尝试检索mongo文档的ID,以便更新它(通过表单) 我将展示到目前为止我所拥有的: Iron Router通过URL将我带到页面: Router.route('companyDetails', { name: 'companyDetails', template: 'companyDetails' })) 显示mongo文档的模板(确实有效): 尝试获取文档ID以将更新信息发送到

我是编程新手,如果这看起来很明显,我深表歉意。在问这个问题之前,我已经花了好几个小时,所以我希望这是可以的

我正在尝试检索mongo文档的ID,以便更新它(通过表单)

我将展示到目前为止我所拥有的:

Iron Router通过URL将我带到页面:

Router.route('companyDetails', {
name: 'companyDetails',
template: 'companyDetails'
}))

显示mongo文档的模板(确实有效):

尝试获取文档ID以将更新信息发送到服务器上的方法的模板:

Template.companyDetails.events({

    'submit form': function(event){
        event.preventDefault();

        var documentId = this._id;

        var name = $('[name=companyName]').val();
        var web = $('[name=companyWeb]').val();
        var twitter = $('[name=companyTwitter]').val();
        var facebook = $('[name=companyFacebook]').val();
        Meteor.call('updateCompanyDetails', documentId, name, web, twitter, facebook);
    }

});
我也有一个服务器方法,但我目前在模板事件中停留在上面的函数

我收到的错误基于:

var documentId = this._id;
它是未定义的。有趣的是,如果你看一下模板本身,我会写一些调试信息,叫做:

    id is: {{_id}}<br>
id是:{{{u id}}
它显示正确的ID。因此模板具有ID。它加载并显示mongo文档中的数据,但我无法从模板事件中检索它

有人能就我在这里做的不对提供一些建议吗

再说一次,我对这个(以及一般的编程)还不熟悉,所以这可能是一个非常艰难的时刻


非常感谢,Rob

基于您的方法调用,您似乎只想更新此页面上的一个特定公司,并且在.find()中只会返回一个。如果不是这样,则需要更新出版物和路线,以便只返回一个组织。以下是根据我的假设使事情正常运行的代码:

<template name = "companyDetails">
    <h3>Update your Company Details</h3>
    {{#with company}}
        <form class = "companysave">
            <dl>
                id is: {{_id}}<br>
                <p><input type = "text" value="{{name}}" name="companyName" size="35"></p>
                <p><input type = "text" placeholder="{{phone}}" name="companyPhone" size="35"></p>
                <p><input type = "text" placeholder="{{web}}" name="companyWeb" size="35"></p>
                <p><input type = "text" placeholder="{{twitter}}" name="companyTwitter" size="35"></p>
                <p><input type = "text" placeholder="{{facebook}}" name="companyFacebook" size="35"></p>
            </dl>
            <p><input type="submit" value="Reset">
            <input type="submit" value="Update"></p>
        </form>
    {{/with}}
</template>

Template.companyDetails.helpers({
    'company': function(){
        return Organisations.findOne();            
    }
});

更新您的公司详细信息
{{{有伴}
id为:{{{u id}}

{{/与}} Template.companyDetails.helpers({ “公司”:函数(){ 返回组织。findOne(); } });

我将find()更改为findOne(),以确保您只返回一个文档。然后我将您的#each切换为a#with,以确保我们只使用helper中返回的一个文档。我还移动了#with out your form元素。这一点很重要,因为它在提交事件中设置了此的数据上下文。您将需要查看,以获取关于其中一些概念的帮助。希望有帮助

非常感谢你,斯蒂芬。这个答案正是我所需要的,现在它变得更有意义了。你可以看到我的初学者错误,一旦你指出,我希望我不要再犯了。我真的很欣赏这样一个透彻的答案,它背后的理由,而不仅仅是一些代码。再次表示感谢。
    id is: {{_id}}<br>
<template name = "companyDetails">
    <h3>Update your Company Details</h3>
    {{#with company}}
        <form class = "companysave">
            <dl>
                id is: {{_id}}<br>
                <p><input type = "text" value="{{name}}" name="companyName" size="35"></p>
                <p><input type = "text" placeholder="{{phone}}" name="companyPhone" size="35"></p>
                <p><input type = "text" placeholder="{{web}}" name="companyWeb" size="35"></p>
                <p><input type = "text" placeholder="{{twitter}}" name="companyTwitter" size="35"></p>
                <p><input type = "text" placeholder="{{facebook}}" name="companyFacebook" size="35"></p>
            </dl>
            <p><input type="submit" value="Reset">
            <input type="submit" value="Update"></p>
        </form>
    {{/with}}
</template>

Template.companyDetails.helpers({
    'company': function(){
        return Organisations.findOne();            
    }
});