[英]Insert array into MongoDB subdocument with Node.js
我目前有一个架构,如下所示:
positionsApplied:[{
position_id:String,
index_position: Number
}],
我还需要将3个对象插入数据库:
如何通过Ajax调用将它们插入数据库? 到目前为止,我尝试过:
将数据添加到这样的数组中:
["58d6b7e11e793c9a506ffe8f", 0, "58c2871414cd3d209abf4fc1", 1, "58d6b7e11e793c9a506ffe7f", 1]
哪一个会这样通过我的ajax调用传递?(不确定)
$.ajax({
url: "/insertPositionIndex",
type: "POST",
dataType: "json",
data: {
newarray
},
success: function (data) {
console.log(data);
}
})
插入数据库是我遇到的困难,如何分解数组以进行插入?
app.post('/insertPositionIndex', function(req, res){
var object = req.body.ordered_divs;
console.log(req.body);
User.update(
{ "_id": req.user._id},
{ "$push":
{"positionsApplied":
{
// unsure what to do here?
}
}
}
).exec(function (err, result) {
console.log(result);
res.send({ results: result });
});
});
任何帮助是极大的赞赏! *请注意,模式中的position_id字段是数组中的div_id,索引位置字段也是数组中的index_pos。
用户架构:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var User = new Schema({
id: String,
name: String,
companyname: String,
password: String,
email: String,
username: String,
location: String,
role:String,
teamwork:Number,
initiative:Number,
technical_skills: Number,
communication:Number,
employees: String,
profile_image: String,
biodescription: String,
twitter: String,
facebook: String,
instagram: String,
linkedin: String,
biodescription: String,
positionsApplied:[{
position_id:String,
index_position: Number
}],
experience: [{
title: String,
location: String,
company: String,
start: String,
end:String,
description:String
}],
position: [{
_id:String,
title: String,
location: String,
start: String,
term:Number,
description:String,
date: {type: Date, default: Date.now},
applied:[{
candidate_id: String,
profile_image: String,
location: String,
name: String,
_id:String
}],
}],
education: [{
school: String,
location: String,
degree: String,
start: String,
end:String,
description:String,
_id:String
}],
images: [{
one: String,
two: String,
three: String,
four: String,
five:String,
six:String
}],
});
module.exports = mongoose.model('User', User);
由于您的Schema是一个对象数组,并且所获取的数据(按照浏览器的控制台)也是一个对象的数组,为什么不将数组本身(浏览器的控制台中的那个)传递给ajax并使用mongodb $push
的$each
$push
其保存到数据库中。
$.ajax({
url: "/insertPositionIndex",
type: "POST",
dataType: "json",
data: {
arrayOfObjects
},
success: function (data) {
console.log(data);
}
})
app.post('/insertPositionIndex', function(req, res){
var object = req.body.ordered_divs;
console.log(req.body);
User.update(
{ "_id": req.user._id},
{
"$push":
{
"positionsApplied":{
$each: req.body.arrayOfObjects
}
}
}
).exec(function (err, result) {
console.log(result);
res.send({ results: result });
});
});
您将必须更改arrayOfObjects
键以匹配您的schema positionsApplied
键的键。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.