从 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
希望对您有所帮助。
我有一个像这样的 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
希望对您有所帮助。