我有一个用 NodeJs 编写的套接字 io 应用程序。它具有发射超时功能,我的套接字服务器应用程序将从客户端接收该功能,并将检查我的猫鼬数据库中的某些数据。我有一个 IF 语句,用于检查返回的数据是否为真并执行一些代码。
exports.timeout = async (ref, clientdata) => {
try {
let resp = await Gc.find({'ref': ref});
for (const ele of resp) {
let mongodata = ele.data;
if (mongodata === clientdata) {
do-something;
}
}
} catch (err) {
console.log(err)
}
}
一个或多个客户端通过socket io调用超时函数。
客户端第一次调用超时函数时,即使满足if条件,也不会执行IF块中的代码。
奇怪的是,第二个调用超时函数的客户端会在满足if条件时执行IF块中的代码。它适用于第三个、第四个和后续客户端。
我有一些用例,当只有 1 个客户端发送超时事件并且由于未执行 IF 条件时程序无法继续。
知道它为什么会这样吗?
答案 0 :(得分:0)
好的,我找到了部分答案。
IF 条件失败,因为我使用了“===”严格相等运算符。由于未知原因,与后续执行相比,Mongoose Find 查询的响应在第一次执行时返回了不同的变量类型。
我正在使用“==”运算符,它可以进行类型更正并且 IF 条件完全匹配。