(Простите, если заголовок не соответствует проблеме, этот вопрос ошеломляет) Мое приложение требует, чтобы я проверил значение из запроса в базе данных.Для этого я создал асинхронную функцию для запроса к базе данных:
async function checktoken(){
return prisma.$exists.invalidtoken({token: "testtoken"}).then(result => {
return(result)
})
}
Я знаю, что вызов базы данных сам по себе работает:
prisma.$exists.invalidtoken({token: "testtoken"}).then(result => {
console.log(result) // returns true
})
В функции, которая запускается при каждом запросе Iпопробуйте вызвать checktoken ():
async function getUser(token){
var promise = await checktoken()
var result = promise
console.log(result) //undefined
};
Изменение функции для включения явного вызова базы данных работает, но только если перед ней определено var promise = await checktoken()
:
async function getUser(token){
var promise = await checktoken() //When this is removed result1 is undefinded
await prisma.$exists.invalidtoken({token: "testtoken"}).then(result1 => {
console.log("inside db call: "+result1) // true
})
};
Я думаюУ меня есть фундаментальное недопонимание async / await, но я точно не знаю, что мне не хватает.
РЕДАКТИРОВАТЬ: Я обновил свой подход, приняв полученный совет, и он все еще не работает.Я начинаю думать, что мой ORM делает что-то странное:
async function test(token) {
const status = await prisma.$exists.invalidtoken({ token: token });
console.log(status);
return status;
}
test("123") //logs false (as it should)
async function getUser(token){
var status = await test(token) //logs undefined
console.log(status) //logs undefined
};