我是新的mongo和mongoose,我想知道我们如何在数据库中添加,删除或编辑对象,当我们有一个嵌入式数据模型如下:
var userSchema = mongoose.Schema({
local : {
email : String,
password : String,
},
houses : [
{
phone_numbers : [ {number: String} ],
adresse : String,
}
]
});
module.exports = mongoose.model('User', userSchema);
例如,我想给我的用户添加一个新的"房子"。
所以我试了:
User.findById(req.user.id, function(err, user){
user.houses.adresse = 'TEST';
user.save();
});
但它似乎不起作用,我没有找到如何在mongoose文档中做到这一点。你知道我该怎么做吗?
感谢您的帮助
您可以将模型分开以提高可读性,并且您可以使用House
模型向User
添加子文档,如;
User.js
var House = require("House");
var userSchema = mongoose.Schema({
email : String,
password : String,
houses : [ House.schema ]
});
module.exports = mongoose.model('User', userSchema);
House.js
var houseSchema = mongoose.Schema({
phone_numbers : [ String ],
adresse : String,
});
module.exports = mongoose.model('House', houseSchema);
在你的控制器;
var User = require("models/User");
var House = require("models/House");
......
User.findById(req.user.id, function(err, user){
var houseModel = new House();
houseModel.adresse = "TEST";
user.houses.push(houseModel);
user.save();
});
//Craete an object and assign it the existing embedded doc.
var item = { houses: req.user.houses };
// add your new address into the existing object
item.houses.push({adresse:'Test'})
// $set below updates the whole document along with your new address
User.findByIdAndUpdate(req.user.id, { $set: item }, function(err, result) {
if (err) {
callback(err, undefined);
} else if (result) {
callback(err, result);
}
});