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