以下是我从浏览器打开网页时运行的代码剪切,它会查询所有用户,并只删除正在查询它的用户对象。
我试图通过将默认情况下生成的_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
,仍然没有如果有条件,请进入,如果有人可以请我指出正确的方向。
答案 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);
})