【问题标题】:MongoDB initial record does not deleteMongoDB初始记录不删除
【发布时间】:2014-07-05 22:52:01
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-23
      • 2019-07-24
      • 2012-08-04
      • 2013-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-24
      相关资源
      最近更新 更多