我正在尝试重新填充HTML表单上的字段,这些字段包含他们最初填写的用户数据,这些数据是他们第一次在Meteor中创建帐户以允许他们编辑信息。表单包含各种输入,选项列表和复选框。数据存储在集合中,没有任何问题。我在用户配置文件中有一个名为profComp的字段,如果表单之前已填写过,则该字段为true,具体取决于false。我试图在路线上添加一个if / else语句 -
Router.route("/edit_dashboard", function(){
if(Meteor.user().profile.profComp)
{
this.render("change_edit_dashboard");
}
else
{
this.render('edit_dashboard');
}
change_edit_dashboard是用户最初填写的html表单的副本,我在change_edit_dashboard模板中添加了一个帮助程序,以从集合中检索用户信息文档。
Template.change_edit_dashboard.helpers({
formData: function()
{
return Base.findOne({_id: Session.get('baseId')})
}
});
并尝试在change_edit_dashboard中使用空格键{{#with}}调用文档上下文
<template name="change_edit_dashboard">
{{#with formData}}
----> form code <------
{{/with}}
</template>
然而,似乎发生了一些奇怪的事情 -
有人可以告诉我可能出错的地方吗?谢谢
答案 0 :(得分:0)
由于您没有向我们提供您的表单代码,因此我假设您正确地为您的输入提供了<input name="myInput" value=myValueHelper>
属性并继续。
从我看到的情况来看,当你想要从集合对象中检索数据时,你试图从Meteor中最易出错的对象之一获取数据Meteor.users
。您可以在下面找到有关您的问题的一些可能性:
Meteor.user().profile.profComp
不存在。当您操纵Meteor.users
集合时,您必须采取一些额外步骤才能访问存储在那里的数据。例如,如果我的mySuperField
模型的根目录中有Meteor.users
字段,我必须在服务器端发布它才能在客户端上订阅和检索它。您可以通过致电Meteor.user()
快速查看它,看看它是否存在。我不确定为什么你需要2个编辑模板,但如果它只是新编辑的问题,你应该考虑使用简单模式的autoform,因为它将极大地帮助你完成表单。你可以在下面找到这些链接。