我在Loopback应用程序中看到一个奇怪的行为。我会试着在下面描述它。当使用事务处理时,环回accessToken为空
我有一个BaseModel,我所有的模型都继承了它,在'access'和'beforeSave'上有操作挂钩来为多租户原因填充一列。它需要访问当前用户,我按如下方式获取它:
var httpContext = require('loopback').getCurrentContext();
var accessToken = httpContext.get('accessToken');
const userId = accessToken && accessToken.userId;
然后,我的一个模型需要在第二个模型中插入记录。 Model1和Model2具有一对一的关系。我已经添加了它的远程方法和我做它在一个事务中,如下所示:在运行Model2.create步骤时由于被的accessToken未定义
Model1.beginTransaction({ isolationLevel: Model1.Transaction.READ_COMMITTED })
.then(function(tx) {
transaction = tx;
return Model1.create({ paramId: param }, { transaction: transaction });
})
.then(function(model1) {
return Model2.create({ model1: model1 }, { transaction: transaction });
})
.then(function(model2) {
model2Instance = model2;
return transaction.commit();
})
.then(function() {
cb(null, model2Instance);
})
.catch(function(err) {
if (transaction) {
transaction.rollback(function(rbe) {
cb(err, null);
});
return;
}
cb(err, null);
})
钩失败。
如果我从模型调用中移除{transaction:transaction},则两个记录都已成功创建,但并未按预期使用数据库事务。
我错过了什么?