使用Mean Stack中的REST API更新JSON中的子数组

我正在开发一个MEAN堆栈应用程序,并挂上了如何实际更新已经保存到MongoDB中的文档。 我已经看到,我必须在我的REST APIpath中使用patch而不是post ,但对我来说还是有点混浊。 我想在用户JSON的Package JSON数组中插入一个新的Package。

可能重复 ,但他重写数组中的值,而不是添加一个新的对象。

我的JSON模式:

 //User schema const UserSchema = mongoose.Schema({ name: { type: String }, email: { type: String, require: true }, username:{ type:String, required: true }, password:{ type:String, required: true }, packages: [{ from: String, to: String, tracking: String }] }); 

我的REST APIpath

 //Update router.patch('/update', (req, res) => { const username = req.body.username; const packages = req.body.packages; User.getUserByUsername(username, (err, user) => { if(!user){ return res.json({success: false, msg: 'User not found'}); } else { User.addPackages(user, req.body.packages, (err, user) => { if(err){ res.json({success: false, msg:'Failed to update packages'}); } else { res.json({success: true, msg:'update packages'}); } }) } }); }); 

我的模块:

 module.exports.addPackages = function(user, packages, callback){ User.findOneAndUpdate( {username:user.username}, {$push: {"packages" : { "to" : packages.to, "from" : packages.from, "tracking" : packages.tracking }}}, {new:true}, function(err, newPackage){ if (err) throw err; }); } module.exports.getUserById = function(id, callback){ User.findById(id, callback); } module.exports.getUserByUsername = function(username, callback){ const query = {username: username} User.findOne(query, callback); } 

他们正在更新到我的MongoDB,但只是对象的ID而不是值…

 db.your_collection.update({}, {$set : {"new_field":1}}, {upsert:false, multi:true})