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