【发布时间】:2019-07-11 04:14:17
【问题描述】:
我开始使用 sequelize 创建 API,但我遇到了事务问题。
我的 sequelize 数据库配置如下:
var Sequelize = require('sequelize');
var sequelize = new Sequelize(CONFIG.database, env.user,
env.password, {
host: env.host,
dialect: env.dialect,
port: env.port,
operatorsAliases: false
});
var db = {};
fs.readdirSync(__dirname).filter(function (file) {
return (file.indexOf('.') !== 0) && (file !== 'index.js');
}).forEach(function (file) {
var model = sequelize.import(path.join(__dirname, file));
db[model.name] = model;
});
Object.keys(db).forEach(function (modelName) {
if ('associate' in db[modelName]) {
db[modelName].associate(db);
}
});
db.sequelize = sequelize;
db.Sequelize = Sequelize;
module.exports = db;
然后我有一个库存控制器,其功能可以像这样保存在数据库中:
var exports = module.exports = {}
let Stock = require('../models').Stock;
let StockVariant = require('../models').StockVariant;
exports.create = function (req, res) {
const body = req.body;
console.log(body);
Stock.create(body).then(function (stock, created) {})...}
我想创建 transaction 以在一个 transaction 中保存到 stockvariant 和 stock 表中,并且可以选择在出错时回滚。
sequelize 中的文档对我来说并不容易理解,因为我不知道如何应用它
return sequelize.transaction(function (t) { return User.create({}) })
因为 t 当然没有在任何地方定义,而且我的 stockcontroller 不导入 sequelize。
所以最后我不明白如何定义该交易函数以创建新股票线的基本概念。
感谢您的帮助!
【问题讨论】:
标签: mysql node.js express sequelize.js