首页 > 解决方案 > 在具有 1 个猫鼬查询的函数中使用 async await 是否很好?

问题描述

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

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 })
}

由于猫鼬返回承诺,但我只是对异步感到困惑,但在这里,它只有 1 个对 db 的查询?不同于此:

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 个查询时,它会解决吗?

标签: javascriptnode.js

解决方案


异步函数将始终返回 Promises,因此在单个 find() 的情况下确实不需要 async/await。不妨这样做:


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

...

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


推荐阅读