如何从多个不同的html页面获取mongo db文档的用户输入?

时间:2016-05-14 01:30:33

标签: javascript html forms mongodb meteor

我有一个mongodb设置,可以保存一些用户输入值。用户输入数据的表单都在不同的html页面上,一旦你填写一个,它会发送到下一页。我无法弄清楚的是,每个字段填写后,如何将所有这些数据放入一个文档中。我发现这很复杂,因为如果你转到下一个表单的下一页,那么前一个表单将不仅仅保存等待所有其他表单填写的数据。为了把它放在某些上下文中,我使用meteor和软件包alerced:autoform和aldeed:collection2将用户输入转换为json格式文档。目前,我只能使用autoform将所有用户输入填写在同一页面上,然后按下提交按钮,同时将其全部放在文档上。

2 个答案:

答案 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调用是最后一个表单,只需插入一次即可完成。在接受解决方案之前,您应该仔细检查由答案填写的用例。