【发布时间】:2018-11-27 03:29:18
【问题描述】:
我一直在尝试找出如何使 sequelize 与“async”和“await”一起工作。 我能找到的关于该主题的最佳信息是此线程中的答案: Node.js 7 how to use sequelize transaction with async / await?
但我不能让它在我的项目中发挥作用。我一直在删减部分代码以使其更简单,这样我就可以找出到底是什么不正确并最终得到如下结果:
const Sequelize = require('sequelize');
const sequelize = new Sequelize('zas', 'zas', 'saz123',
{
host: 'someHost',
dialect: 'mysql',
}
);
//test
let transaction;
var SimpleInspectionModel = require('../models/simpleInspectionModel.js')(sequelize, { dataTypes: Sequelize.DataTypes } );
try {
// get transaction
transaction = await sequelize.transaction();
// step 2
await SimpleInspectionModel.find({}, {transaction});
// commit
await transaction.commit();
} catch (err) {
// Rollback transaction if any errors were encountered
await transaction.rollback();
}
无论何时运行,这段代码都会输出这种错误:
transaction = 等待续集.transaction(); ^^^^^
SyntaxError: await 仅在异步函数中有效
在 Object.runInThisContext 的 createScript (vm.js:80:10) (vm.js:139:10) 在 Module._compile (module.js:616:28) 在 Module.load 中的 Object.Module._extensions..js (module.js:663:10) (module.js:565:32) 在 tryModuleLoad (module.js:505:12) 在 Function.Module._load (module.js:497:3) 在 Function.Module.runMain (module.js:693:10) 在启动时 (bootstrap_node.js:191:16) 在 bootstrap_node.js:612:3
package.json 中的项目依赖:
“正文解析器”:“^1.18.3” “快递”:“^4.16.3”, “快速会话”:“^1.15.6”, “文件系统”:“^2.2.2”, "mysql2": "^1.5.3", “续集”:“^4.37.10”
节点 v8.11.3
【问题讨论】:
-
错误信息告诉你到底出了什么问题,你只能在
async function块内使用await。 -
@BenFortune 是对的。您必须将您的代码块在其中的方法或函数声明为
async或使用(async function(){ … your code goes here … })将使用await 的代码包装在自调用异步函数中编辑:或将其包装在实际函数中并调用它
标签: javascript node.js orm async-await sequelize.js