从 Express 应用插入嵌入式文档 Mongo 数据库

Insert embedded documents Mongo DB from express app

我有一个像这样的 mongo 数据库模式

users:
{username:"",
 age: "",
 data: [ 
      {field1:"", field2:""},
      {field1:"", field2:""}
]

}

我的问题是如何将我的用户对象发送到我的快速路由 post 数据到数据库。

通常我会像这样创建我的用户对象:

var user= {username:"test" age: 20};

并通过我的 ajax 调用将此用户对象发送到我的 adduser 路由。

我如何构建我的上述作业以包含我的嵌入式文档。

当我使用这个结构时:

 sign_in_data: [{date:"",time_in:"",time_out:""}]

我的数据库是这样的:

sign_in_data[0][date]: "",
sign_in_data[0][time_in]: "",
sign_in_data[0][time_out]: ""

但它应该是这样的:

sign_in_data: [
{
   date: "2015-06-08",
   time_in: "17:35",
   time_out: "17:35"
},
]

在你配置express的时候,检查一下你是否在使用这行代码:

如果您使用的是 Express 4.x 版本

注意:您需要安装body-parser

app.use(bodyParser.urlencoded({ extended: true }));

如果您使用的是 Express 3.x 版本

app.use(express.urlencoded());

我做了一个测试示例,其中 属性 cars 是从 html 文件发送的对象数组,它会根据需要保存在数据库中。

所以这是我的快速服务器文件:

// ..

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));


app.post('/api/user', function (req, res) {
  var user = {
    username: req.body.username,
    age: req.body.age,
    cars: req.body.cars
  };

  db
    .collection('user')
    .insert(user, function (err, result) {
      if (err) return res.status(500).send(err);

      res.send(result);
    });
});

// ..

插入的数据库数据:

{
    "_id" : ObjectId("5578b48f1e8cdf0520bdf76f"),
    "username" : "wilsonbalderrama",
    "age" : "29",
    "cars" : [
        {
            "name" : "Ferrari",
            "color" : "Red"
        },
        {
            "name" : "Mustang",
            "color" : "Gray"
        }
    ]
}

和我发送数据的 html 文件,你可以在这个要点文件中查看它: https://gist.github.com/wilsonbalderrama/62f76a348c0aa217cdd9

希望对您有所帮助。