Node.js prototype.findIndex()不';t返回对象的索引

Node.js prototype.findIndex()不';t返回对象的索引,node.js,Node.js,我正在使用nodejs实现一个服务器程序。在那里,我编写了一个方法来检索数组中对象的索引(计划从数组中删除特定对象)。下面是该方法的实现 async function findConsecutiveSessions(_session){ if (_session.ConsecutiveSessionID !== ""){ consecutiveSession = await getConsecutiveSession(_session.Consecu

我正在使用nodejs实现一个服务器程序。在那里,我编写了一个方法来检索数组中对象的索引(计划从数组中删除特定对象)。下面是该方法的实现

async function findConsecutiveSessions(_session){
    if (_session.ConsecutiveSessionID !== ""){

        consecutiveSession = await getConsecutiveSession(_session.ConsecutiveSessionID);
        
        let index = await sessions.findIndex(obj => obj._id === consecutiveSession._id)
        console.log(index)
    }
}

async function getConsecutiveSession(_consecutiveSessionId){

    let session;

    session = await Sessions.findOne({_id: _consecutiveSessionId});

    return session;
}
场景:-

我声明了一个名为
sessions
的数组,其中包含所有会话对象。会话对象可能包含另一个会话对象的id,即
连续会话id
。通过使用
getConcertiveSession(_session.ConcertiveSessionId)
我可以找到特定会话的相关连续会话(如果有)

我想要的:-

返回的会话对象已在
sessions
数组中。因此,我想从
sessions
数组中删除返回的会话。(一旦能够正确找到索引,我将使用sessions.splice()方法)

电流输出:-

我使用console.log()打印索引值。但是它为所有传递的会话值打印-1。我与数据库(MongoDB)进行了交叉检查,以检查ID是否正确,并且没有问题。下面是数据库中的示例文档

_id : 5f4698bde7bb344004500f32
LecName : Array
UnAvailableTime : Array
ConsecutiveSessionID : "5f63463c38f68521ae241844"
Rooms : Array
SubName : "SEPQM"
SubCode : "SE3010"
Tag : "Lecture"
GroupOrSubGroupName : "Y1.S1.SE.10"
NoOfStudents : 120
Duration : 2
__v : 0

_id : 5f63463c38f68521ae241844
LecName : Array
times : Array
ConsecutiveSessionID : "5f4698bde7bb344004500f32"
Rooms : Array
SubName : "SEPQM"
SubCode : "SE3010"
Tag : "Tutorial"
GroupOrSubGroupName : "Y1.S1.SE.10.1"
NoOfStudents : 120
Duration : 1
__v : 0

还有一些其他文档没有
连续会话ID
。我只是提供了匹配的会议,以获得一个想法。可能的错误是什么?谁能帮帮我吗?谢谢

无法确定,因为我看不到
会话的内容,但我猜这是由于类型不匹配造成的。MongoDB ID不是字符串,即使它们看起来像字符串。如果您将MongoDB ID与字符串进行比较,它将始终失败。哦,我没有意识到这一点。我正在与mongoDB id进行比较。那么,在比较之前,我必须将mongoDB id转换为字符串吗@MatusDubravaYes,你需要把它们转换成字符串。成功了。谢谢@MatusDubrava