javascript - 在具有 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 个查询时,它会解决吗?
解决方案
异步函数将始终返回 Promises,因此在单个 find() 的情况下确实不需要 async/await。不妨这样做:
export const getUser = (_id) => {
return User.findOne({ _id })
}
...
getUser(aUserId).then(user => console.log(user))
推荐阅读
- swift - 使用多次上传更新 Firebase 数据库对象
- python - 从 Pandas DataFrame 中删除所有非字母数字字符
- dart - dart2js:在编译时清理 HTML 空白
- vba - 如何根据 VBA 中的预定义索引从另一个工作表中复制和粘贴一系列单元格
- azure - 尝试在 IoT Hub 中设置文件上传时未找到存储帐户
- android - 我怎么得到!(感叹号)出现在模拟器上的 wifi / 网络连接旁边,以便我可以解决错误
- dynamic - 红移。我们如何(动态地)将表从列转置为行?
- python - ModuleNotFoundError:没有名为“keras”的模块
- javascript - 传播要删除的语法
- sharepoint - Angular 6 & rxjs 6 - 订阅返回未定义