我有2个收藏,
var Sub= new Schema({
content: String,
date: Date
});
var Main= new Schema({
subs: [Sub]
});
我正在创建和删除这种方式:
exports.create = function(req, res) {
new Sub({
content: req.body.content
}).save(function(err, sub) {
Main.update({_id: req.body.mid}, {$push: {subs: sub}}, {upsert: true}, function(err, mmain) {
res.redirect('/' + req.body.mid);
});
});
};
exports.destroy = function(req, res) {
Sub.findOne({_id: req.params.sid}, function(err, sub) {
Main.update({_id: req.params.mid}, {$pull: {subs: sub}}, function(err, mmain) {
sub.remove(function(err, sub) {
res.redirect('/' + req.params.mid);
});
});
});
};
所以基本上我首先创建一个子对象,然后我使用.update来将该子对象推送到主集合中。但是,当我从列表中删除一个子对象时,我还必须删除原始子对象。还有另一种方法吗?因此,我只需要更改一个子对象,而不必更改现在位于Main对象内的子对象以及原始子对象。
答案 0 :(得分:0)
好吧,我发现了怎么做。它非常适合我的应用程序使用嵌入式子而不是拥有另一个Schema和集合所以我删除了Sub集合并编辑了Main集合:
var Main= new Schema({
subs: [
content: String,
date: Date
]
});
exports.create = function(req, res) {
Main.update({_id: req.body.mid}, {$push: {subs: {content: req.body.content}}}, {upsert: true},function(err, main) {
res.end();
});
};