MongoDB初始记录不会删除

时间:2014-06-03 18:23:12

标签: node.js backbone.js express mongoose node-mongodb-native

我有一个使用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'});
            }
        }
    });
});

1 个答案:

答案 0 :(得分:1)

问题是您正在设置found = index然后布尔评估found作为是否找到它的指示。对于删除第一个元素的情况,found将为0,当使用false进行检查时评估为if(found),因此您希望使用显式检查:

if (found !== false) {
    ...