我有一个mongodb设置,可以保存一些用户输入值。用户输入数据的表单都在不同的html页面上,一旦你填写一个,它会发送到下一页。我无法弄清楚的是,每个字段填写后,如何将所有这些数据放入一个文档中。我发现这很复杂,因为如果你转到下一个表单的下一页,那么前一个表单将不仅仅保存等待所有其他表单填写的数据。为了把它放在某些上下文中,我使用meteor和软件包alerced:autoform和aldeed:collection2将用户输入转换为json格式文档。目前,我只能使用autoform将所有用户输入填写在同一页面上,然后按下提交按钮,同时将其全部放在文档上。
答案 0 :(得分:3)
在第一个表单上插入带有Meteor.userId()的集合(假设您的用户已登录)。 在下一个表单中,您只需使用方法更新集合。
客户端:
Meteor.call('firstForm',var1,var2);
Meteor.call('secondForm',var1,var2);
服务器:
Meteor.methods({
'firstForm': function (var1,var2) {
collection.insert({
createdBy: Meteor.userId(),
var1: var1,
var2: var2
});
},
'secondForm': function (var3,var4) {
collection.update({
createdBy: Meteor.userId()
}, {
$set: {
var3: var3,
var4: var4
}
});
}
});
答案 1 :(得分:0)
更好的解决方案是使用reactive-var维护会话对象。可以是n个表单,只需更新会话对象即可。在上面的代码中,如果用户返回并对第一个表单进行更改,会怎样?它将再次插入甚至失败。上面的代码只显示了积极的工作流程,但您必须考虑所有可能性。您可以对会话对象进行所有n次更新,这不重要。 db调用是最后一个表单,只需插入一次即可完成。在接受解决方案之前,您应该仔细检查由答案填写的用例。