在这种情况下使用异步等待是否很好,我感到很困惑:
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个查询时,它可以解决吗?
答案 0 :(得分:2)
异步函数将始终返回Promises,因此在单个find()情况下,实际上不需要异步/等待。 也可以这样做:
export const getUser = (_id) => {
return User.findOne({ _id })
}
...
getUser(aUserId).then(user => console.log(user))