Node.js:从表单中提取数据并提交给Mongo db

时间:2014-01-28 05:23:19

标签: javascript node.js mongodb express

使用Node和Express。我如何将所有request数据保存到数组中,然后将数组中的每个项目插入到mongo集合中?

我的路线目前设置如下:app.post("/addbulletin", routes.addbulletin(db));

我正在处理视图并处理数据,如下所示:

exports.addbulletin = function(db) {
  return function(req, res) {

    // Get our form values. These rely on the "name" attributes
    var date = req.body.date,
        name = req.body.name;
        // and many more...

    // Submit to the DB
    collection.insert({
      "date" : date,
      "name" : name
      // and many more...
    }, function (err, data) {
      if (err) {
        res.send("There was a problem adding the information to the database.");
      }
      else {
        res.location("index");
        res.redirect("/");
      }
    });

  }
}

这种方式的问题是我必须知道需要发送到数据库的所有项目。如果我不知道页面上的哪些字段可以从中获取数据怎么办?这正是我目前所处的情况,因为我有一个基于用户选择填充输入的表单。因此,我不想将每个可能的req.body.whatever放在一个变量中。我只想说req.body.all,例如,只保存提交给变量的数据,然后将这些数据插入数据库,当然也提取每个字段的名称。

1 个答案:

答案 0 :(得分:1)

您可以直接将req.body保存到mongodb:

// Submit to the DB
collection.insert(req.body, function (err, data) {
  if (err) {
    res.send("There was a problem adding the information to the database.");
  }
  else {
    res.location("index");
    res.redirect("/");
  }
});

只需保留req.body对象即可。请注意过滤(删除)某些属性,例如_id

delete req.body.__id