我有一个使用Mongoose,Node和Backbone的应用程序。我已经设置了一个删除方法来通过“id”从数组中删除项目。除了初始记录外,一切都正常工作 - 无法删除。我尝试删除时出现以下错误消息:DELETE / test / signups / 538e0e1df26a5bb086b3026a 404 MongoDB中的初始记录有什么时髦吗?我是这个软件的新手。这是我的删除方法:
app.delete('/test/signups/:id', isLoggedIn, function(req, res) {
User.findOne({'_id': req.user.id }, function(err, user) {
if (err)
return done(err);
if (user) {
var found = false;
var singlesignup = user.signup.filter(function(e){ return e._id == req.params.id })[0]
user.signup.forEach(function (singlesignup, index) {
if (singlesignup._id.toString() === req.params.id) {
found = index;
}
});
if(found) {
user.signup.splice(found, 1);
user.save(function(err){
if(!err){
res.send(user);
}
else {
console.log(err);
}
});
res.json(200, {status: 'deleted'});
} else {
res.json(404, {status: 'invalid survey question deletion'});
}
}
});
});
答案 0 :(得分:1)
问题是您正在设置found = index
然后布尔评估found
作为是否找到它的指示。对于删除第一个元素的情况,found
将为0
,当使用false
进行检查时评估为if(found)
,因此您希望使用显式检查:
if (found !== false) {
...