无法将nodejs中两个对象的id等同于mongodb

时间:2017-03-09 06:39:08

标签: node.js mongodb express

以下是我从浏览器打开网页时运行的代码剪切,它会查询所有用户,并只删除正在查询它的用户对象。

我试图通过将默认情况下生成的_id字段等同于mongodb并且始终是唯一的,我能够打印每个对象{{1} }但是当我在 if 条件下尝试时,它无法输入if条件,

_id

以上是上面的输出:

user.find({}, { 'local.name': 1, route_id: 1, stop_number: 1, _id: 1 }, function (err, allusers) {

    if (err) throw err;

    var len = allusers.length;
    for (var index = 0; index < len; index++) {
        console.log(allusers[index]._id);
        console.log(index);
        if (allusers[index]._id === req.user._id) {
            console.log("here");
            allusers.splice(index, 1);
        }
    }
    res.send(allusers);
})

无法确定我出错的地方,是的, GET /javascripts/delete_user.js 304 1ms 588f2aded1902a1b08959145 0 58bd116c84fdb70a9c4f34aa 1 等于第一个用户的ID req.user._id,仍然没有如果有条件,请进入,如果有人可以请我指出正确的方向。

2 个答案:

答案 0 :(得分:1)

尝试

if( allusers[index]._id.toString() === req.user._id.toString() ) {
                            console.log("here");
                            allusers.splice(index,1);
                        }

适合我:)

答案 1 :(得分:0)

我找到了错误的解决方案,我发现它后立即移除了对象,这减少了allusers数组的长度,以及何时尝试到达最后一个索引,现在已经未定义,因为我已拼接它正在读取undefined的-id属性。

这是正确的代码:

user.find({}, { 'local.name': 1, route_id: 1, stop_number: 1, _id: 1 }, function (err, allusers) {

    if (err) throw err;

    var len = allusers.length;
    var to_remove;
    for (var index = 0; index < len; index++) {
        if (allusers[index]._id === req.user._id) {
            to_remove = index;
        }
    }
    allusers.splice(to_remove, 1);
    res.send(allusers);
})