2016-02-15 91 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},則兩個記錄都已成功創建,但並未按預期使用數據庫事務。

我錯過了什麼?

回答

相關問題