2016-02-15 60 views
0

我在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},则两个记录都已成功创建,但并未按预期使用数据库事务。

我错过了什么?

回答

相关问题