我有以下问题:在以下代码中,我试图检查变量结果是真还是假:
const result: boolean = await this.sqlConnector.validatePassword
(this.userData.getUserId(), validatorContext.recognized.value);
// Returns string
console.log(typeof(result));
该函数sqlconnector.validatePassword
还返回一个布尔值。该函数的标题如下所示:
public validatePassword (userId: string, userInput: string): Promise <boolean>
但是,该typeof(result)
函数说,该变量来自字符串类型。这最终导致以下 if 语句总是失败的事实。
// always false because no boolean
if (result === true) {
return true;
} else {
这是什么原因?
看起来你被传回一个字符串值。这应该在返回响应的代码中修复。作为临时措施,您可以检查字符串的内容并以类似的方式使用它。如果固定,则应保持同时响应。
if (typeof result === "string" && result === "true") {
return true;
}
您还可以检查响应并相应地更改它。
let result: any = await this.sqlConnector.validatePassword
(this.userData.getUserId(), validatorContext.recognized.value);
if (typeof result === 'string'){
result = result === "true";
}
最重要的是,尽管我建议将响应作为布尔类型返回,如果这是允许简单检查的目的。
if (result) // as long as result is true
{
//you will end up here
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句