我无法弄清楚当我创建时如何删除另一个MongoDB方案中的数据。
我在mean.js堆栈上运行。
exports.create = function(req, res) {
var sign = new Sign(req.body);
sign.save(function(err) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
sign.timesheets.forEach(function(entry) {
console.log(entry._id);
});
res.jsonp(sign);
}
});
};
我在这里打电话来创建一个标志。标志包括一些字符串和数组'时间表'与时间表对象。
我还有一个时间表方案,我想从时间表方案中删除我的符号中包含的所有时间表对象。
这是我的时间表删除控制器:
exports.delete = function(req, res) {
var timesheet = req.timesheet;
timesheet.remove(function(err) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.jsonp(timesheet);
}
});
};
如何通过min sign controller为符号中的每个时间表调用此内容?
修改:
路线:
module.exports = function(app) {
var sign = require('../../app/controllers/sign.server.controller');
var timesheets = require('../../app/controllers/timesheets.server.controller');
app.route('/sign')
.post(sign.create, timesheets.deleteAll);
delete all
exports.deleteAll = function(req, res) {
var timesheet = req.timesheet;
timesheet.timesheets._id.forEach(function(entry) {
entry.remove(function(err) {
console.log(entry);
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.jsonp(entry);
}
});
});
};
它运行,我可以在控制台中看到id,但它不会删除任何内容。
答案 0 :(得分:0)
如果您已在每个SignSchema文档中将其实现为TimesheetSchema文档的数组,那么删除父文档将使用它的所有部分。
如果您将其存储为引用另一个集合中的文档的ID数组,那么您必须逐个浏览并删除它们。但我认为如果你不需要做任何花哨的事情,最好采用第一种方法。这是您可以轻松处理删除,并且在语义和性能方面更有意义地检索一次性处理“符号”所需的所有内容。