从express应用程序插入嵌入式文档Mongo DB

时间:2015-06-10 20:43:17

标签: javascript node.js mongodb express mongoskin

我有像这样的mongo db模式

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

}

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

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

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"
},
]

1 个答案:

答案 0 :(得分:0)

在配置express时,请查看是否使用以下代码:

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

注意:您需要安装body-parser

app.use(express.urlencoded());

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

// ..

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);
    });
});

// ..

我做了一个测试示例,其中属性汽车是从html文件发送的一组对象,并且它在数据库中保存。

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

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

插入数据库数据:

for (var f in d = function(){}, ['a', 'b']){console.log(f)}

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

希望这会对你有所帮助。