作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Google Cloud 功能来验证我的 OTP 身份验证,并且还使用 Firebase 数据库将代码保存在数据库中。
我的问题是,即使满足 If 语句条件,它也总是执行 else 语句。我正在将来自 firebase 数据库的代码和 codeValid 与用户输入进行比较。因此,我的用户输入对 code 感到满意并且 codevalid 也得到满足,但它总是移动到 else 语句。我不知道为什么。
这是我的代码
const admin = require('firebase-admin');
module.exports = function(req, res) {
if(!req.body.phone || !req.body.code) {
return res.status(422).send({error: 'Phone and Code Must be
Provided'});
}
const phone = String(req.body.phone).replace(/[^\d]/g, '');
const code = parseInt(req.body.code);
return admin.auth().getUser(phone)
.then(() => {
const ref = admin.database().ref('users/'+ phone);
return ref.on('value', snapshot => {
ref.off();
const user = snapshot.val();
if (user.code === code && user.codeValid === true) {
ref.update({ codeValid: false });
admin.auth().createCustomToken(phone)
.then(token => res.send({ token: token }))
.catch((err)=> res.status(422).send({ error:err }));
}
else {
return res.status(422).send({ error: 'Code Not Valid' });
}
});
})
.catch((err)=> res.status(422).send({ error:err }) )
}
所以,无论我输入什么,我总是得到“代码无效”。我也用 firebase 数据库交叉检查了所有值,一切都匹配。但找不到它发生的原因。
最佳答案
将此添加到您的if 条件
之上,并检查您的陈述是否真实。我认为您的数据类型可能不同,例如user.code
和code
。因此,您还应该使用 ==
或解析您的值来测试它。
// values and datatypes are equal
if (user.code === code) {
console.log('user.code === code');
}
// values and datatypes are equal
if (user.codeValid === true) {
console.log('user.codeValid === codeValid');
}
// values are equal
if (user.code == code) {
console.log('user.code == code');
}
// values are equal
if (user.codeValid == true) {
console.log('user.codeValid == codeValid');
}
有关 ==
和 ===
的区别的更多信息,请查看此答案:
关于javascript - 即使 If 语句条件有效,Else 语句也会执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54053844/
我是一名优秀的程序员,十分优秀!