如何从多个不同的html页面获得mongodb文档的用户输入

How do you get user input for a mongo db document from multiple different html pages?

本文关键字:mongodb 输入 用户 文档 html      更新时间:2023-09-26

我有一个mongodb设置,它将保存一些用户输入值。用户将输入数据的表单都在不同的html页面上,一旦您填写了一个表单,它就会将您发送到下一个页面。我想不出的是,一旦每个字段都被填满,如何将所有这些数据放在一个文档中。我觉得这很复杂,因为如果你转到下一个表格的下一页,上一个表格将不仅仅包含等待所有其他表格填写的数据。为了将其放在某种上下文中,我使用meter和包aldeed:autoform和aldeed:collection2将用户输入转换为json格式的文档。目前,我只能使用自动表单在同一页面上填写所有用户输入,然后按下提交按钮,将所有输入同时放在文档中。

在第一个表单中,使用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
        }
    });
  }
});

更好的解决方案是使用reactive-var维护会话对象。可能是n个表单,您可以简单地更新会话对象。在上面的代码中,如果用户返回并更改第一个表单,该怎么办?它将再次插入,甚至可能失败。上面的代码只是显示了积极的工作流程,但您必须考虑所有的可能性。您可以对会话对象进行所有n次更新,这并不重要。数据库调用是对最后一个表单进行的,您只插入一次,就完成了。在接受一个解决方案之前,你应该仔细检查由答案填充的用例。