在具有1个猫鼬查询的函数中使用async await很好吗?

时间:2019-07-04 18:12:39

标签: javascript node.js

在这种情况下使用异步等待是否很好,我感到很困惑:

import User from models/User

export const getUser = async (_id) => {
  const user = await User.findOne({ _id })
  if (user) return user 
  return null 
}

export const getUser = async (_id) => {
   return await User.findOne({ _id })
}

由于猫鼬返回诺言,但由于与异步我感到困惑,但是在这里,它对db仅有1个查询?不像这样:

export const getUser = async (_id) => {
   try { 
     const user = await User.findOne({ _id })
     const comments = await User.findOne({ _id })
     return { user, comments }
   } catch(e) {
     console.log('something went wrong', e)
     return null
   }
}

因为它是2个查询,所以您必须等待第一个查询,然后是第二个查询,但是当您只需要等待1个查询时,它可以解决吗?

1 个答案:

答案 0 :(得分:2)

异步函数将始终返回Promises,因此在单个find()情况下,实际上不需要异步/等待。 也可以这样做:


export const getUser = (_id) => {
   return User.findOne({ _id })
}

...

getUser(aUserId).then(user => console.log(user))