异步函数中的 NodeJS IF 语句即使满足条件也不会执行



我有一个用NodeJs编写的socket io应用程序。它有一个发出超时特性,我的套接字服务器应用程序将从客户端接收该特性,并检查我的mongoose数据库中的一些数据。我有一个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调用timeout函数。

客户端第一次调用超时函数时,即使满足IF条件,也不会执行IF块中的代码。

奇怪的是,调用超时函数的第二个客户端将在IF条件满足时执行IF块中的代码。它适用于第三、第四个和后续的客户机。

我有一些用例,当只有一个客户端发送超时事件,程序不能继续,因为IF条件没有执行。

知道它为什么会这样吗?

好的,我找到了部分答案。

IF条件失败,因为我使用了"==="严格相等运算符。由于未知的原因,与后续执行相比,第一次执行Mongoose Find查询的响应返回不同的变量类型。

我使用"=="操作符,进行类型校正,并且IF条件完全匹配。

最新更新