Ubuntu 20
节点12.18.4
NPM 6.14.6
续集6.3.5
我遵循了官方指南,现在很困惑。
成功配置 Sequelize 并连接后,我尝试运行(根据官方文档)
await sequelize.authenticate();
它抛出SyntaxError: await is only valid in async function
。
在官方入门页面https://sequelize.org/master/manual/getting-started.html下,它明确指出:
Sequelize提供的大多数方法都是异步的,因此返回Promises。它们都是Promises,因此您可以立即使用Promise API(例如,使用then,catch,finally)。
当然,使用异步和等待也可以正常工作。
答案 0 :(得分:0)
您必须使用这样的异步功能
getStateById: async (req, res) => {
^^^^^^
sequelize.sequelize.transaction(async (t1) => {
let state = await sequelize.state.findOne({
where: {
id: req.params.id
}
});
let result = error.OK;
result.data = state;
logger.info(result);
return res.status(200).send(result);
}).catch(function (err) {
logger.error(err);
return res.status(500).send(error.SERVER_ERROR);
});
}
当您要在应用中使用await时,异步是必需的,它将仅在异步函数类型中使用
答案 1 :(得分:0)
这意味着在您的函数中,如果必须等待,则需要声明一个异步外部函数:
async function() {
await sequelize.authenticate();
}
或
const nameYourFunction = async () => {
await sequelize.authenticate();
}
请记住在等待之前声明异步,否则,如果您不想声明异步等待,可以使用诺言
const nameYourFunction = () => {
sequelize
.authenticate()
.then((result) => {
console.log('nameYourFunction -> result', result);
})
.catch((error) => {
console.log('nameYourFunction -> error', error);
});
};