【发布时间】:2020-02-03 02:55:21
【问题描述】:
所以我有这个功能。 InscripcionesDB 是一个classesID 的列表,而claseDB 只是一个classID
async function verificarInscripcion(claseId, username) {
var inscripcionesDB = await obtenerInscripciones(username);
var claseDB = await Clase.findOne({ _id: claseId })
for (let i = 0; i < inscripcionesDB.length; i++) {
if (inscripcionesDB[i]._id == claseDB._id) {
console.log(true);
}
console.log(false);
console.log(inscripcionesDB[i]._id, 'CLASSESID');
console.log(clasedb._id, 'CLASSID');
}
}
所以问题是,有一个 elementId 匹配,但输出总是错误的。我做错了什么?这是输出:
5d959aa70d3ee404889d2b26 CLASSESID
5d82e4dc5770f32b50246657 CLASSID
false
5d959abc0d3ee404889d2b28 CLASSESID
5d82e4dc5770f32b50246657 CLASSID
false
5d82e4dc5770f32b50246657 CLASSESID // THIS ONE IS MATCHING
5d82e4dc5770f32b50246657 CLASSID //
false
【问题讨论】:
-
clasedb !== claseDB我不知道前者是什么,但它是你记录的。您正在检查后者。 -
不确定,但您可以尝试在比较之前将您的两个 ID 转换为字符串,例如
if (inscripcionesDB[i]._id.toString() == claseDB._id.toString()) -
为什么你
findOneby id 只是为了得到找到的对象的id?您已经拥有claseId中的 ID。您还可以在inscripcionesDB上调用 find -
.toString() 完美运行。为什么这适用于 .tostring 而不是没有它?
-
就像@MohammedAmirAnsari 说的,在猫鼬中有一个虚拟的get 是
.id,所以尝试这样做:inscripcionesDB[i].id == claseDB.idid 被转换为字符串而不是对象
标签: arrays node.js for-loop if-statement