繁体   English   中英

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

[英]Insert embedded documents Mongo DB from express app

我有一个像这样的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"
},
]

在配置Express时,请检查您是否正在使用以下代码行:

如果您使用Express 4.x版本

注意 :您需要安装主体解析器

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

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

app.use(express.urlencoded());

我做了一个测试示例,其中,属性车是从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

希望这对您有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM