Я использую функцию Google Cloud для проверки своей аутентификации OTP, а также использую базу данных Firebase для сохранения кода в базе данных.
Моя проблема в том, что даже когда условие If выполняется, оно всегда выполняет оператор else. Я сравниваю code и codeValid из базы данных Firebase с пользовательским вводом. Таким образом, мой пользовательский ввод удовлетворен кодом и 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, все совпадает. Но не мог найти, почему это происходит.