#node.js #asynchronous #mongoose #async-await
Вопрос:
Я не понимаю, в чем разница между :
var users = Users.findOne({key})
var users = await Users.findOne({key})
Ответ №1:
var users = Users.findOne({key})
Users.findOne()
метод возвращает обещание, которое может быть либо разрешено, либо отклонено. См. обещания
Итак, в приведенном выше случае переменная users фактически содержит promise
объект, и если вы хотите получить разрешенные данные, вам нужно сделать что-то вроде
users.then(data=>{
// your db query data
}).catch(err=>{
// error if something goes wrong
})
Приведенный ниже синтаксис с await фактически дает вам разрешенные данные promise
см. await
var users = await Users.findOne({key})
таким образом, у вас будут такие данные [{key:value}]
вашего mongodb, которые хранятся в users
переменной.
Также await
допустимо только в асинхронной функции, поэтому вам нужно обернуть его внутри асинхронной функции
async function foo(){
var users = await Users.findOne({key})
}