【发布时间】:2015-02-03 15:54:12
【问题描述】:
我不知道在创建时如何删除另一个 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);
}
});
};
在这里,我打电话来创建一个标志。 Sign 包括一些字符串和一个带有时间表对象的数组“timesheets”。
我还有一个时间表方案,我想从时间表方案中删除所有包含在我的标志中的时间表对象。
这是我的时间表删除控制器:
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);
}
});
};
我如何从最小符号控制器调用这个,对于每个时间表?
编辑:
路线:
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,但它没有删除任何东西。
【问题讨论】:
-
如果您通过 API 访问此控制器,请在我的问题下尝试 Mike 的解决方案:stackoverflow.com/questions/28138498/…
-
@karolkochan 完成了,现在不要删除时间表:/
-
我认为
deleteAll函数中的代码entry.remove(...)不知道该条目是指您的时间表模型。所以你需要运行类似Timesheed.remove( { _id: { $in: your_array } }, false );(参考mongo docs)的东西,在这种情况下your_array是timesheet.timesheets -
@karolkochan 是的,你是对的,它现在看起来像这样 pastebin.com/Nd21H2Qq 但是如果它有多个时间表,则崩溃,认为这是导致 res.jsonp(timesheet),我如何将其更改为 res每个完成后? :)
-
您可以试试这个:pastebin.com/DgKS5zTD 或这个:pastebin.com/9j9VigYK 只需添加
index变量并检查最后一个元素以返回响应对象。
标签: javascript angularjs mongodb mean-stack