Estoy haciendo la autenticación en mi aplicación. Y tener tal código
const ttt = currentUser.changedPasswordAfter(decoded.iat); console.log(ttt); if (ttt) { console.log('if thinks ttt is true');changePasswordAfter devuelve la promesa (verdadero o falso) Así que ejecuto la solicitud y obtengo esto en la consola.
Promise { false } if thinks ttt is trueComo puede ver, ttt es FALSO, pero la instrucción IF decidió que es VERDADERO. Cómo puedo arreglar eso ?
La promesa es un objeto, por lo tanto, es "verdad". Sólo el valor resuelto de la promesa puede ser verdadero o falso. Para darle a la promesa la oportunidad de resolverse, se debe usar el método await o Promise.then .
const ttt = currentUser.changedPasswordAfter(decoded.iat); ttt.then((result) => { if (result) console.log('Promise returned true') else console.log('Promise returned false') })Debido a que ttt (que es un nombre muy malo para una variable) es una Promesa, no un booleano, la declaración if devuelve True porque la variable ttt tiene una referencia (no es indefinida ni nula). intente agregar la palabra clave en await . funcionará pero tienes que hacer que la función sea asíncrona
const ttt = await currentUser.changedPasswordAfter(decoded.iat); console.log(ttt); if (ttt) { console.log('if thinks ttt is true');