我正在尝试使用async/await
以sequelize
样式获取具有特定ID的所有行。我的代码如下:
已更新:
router.get('/', errorHandler(async (req, res, next) => {
let domainsDB = await Domain.findAll({
where: { accID: accID },
attributes: [`adID`, `domain`, `status`]
})
}
当我console.log(domainsDB)
时,我看到以下内容:
[
domains {
dataValues: [Object],
_previousDataValues: [Object],
_changed: {},
_modelOptions: [Object],
_options: [Object],
__eagerlyLoadedAssociations: [],
isNewRecord: false },
domains {
...
...
...
]
docs说它必须是一个数组。但是控制台日志显示这是一个对象。 dataValues
中此对象中的数据正确。有我的域名。但是我希望可以使用一个数组。
如何用async/await?
返回数组。谢谢您的帮助。
答案 0 :(得分:3)
您需要的是:raw : true
,
let domainsDB = await Domain.findAll({
where: { accID: accID },
attributes: [`adID`, `domain`, `status`],
raw : true // <--- HERE
})
默认情况下,模型查询返回sequelize
对象,要获得纯结果,我们需要传递raw : true
答案 1 :(得分:0)
await应该包装在带有异步键的函数中。
正确的代码段如下所示:
async fetchData(accID) {
return await Domain.findAll({
where: { accID: accID },
attributes: [`adID`, `domain`, `status`]
})
}
let data = fetchData(1);
console.log(data);
替代方法是:1)使用生成器函数2)Promise。
从本质上讲,它们是同一件事,它使您的同步代码充当异步代码。