我想你應該add a pre-processing middleware來填充當前用戶的上下文。
/server/server.js
app.use(loopback.context());
app.use(loopback.token());
app.use(function setCurrentUser(req, res, next) {
if (!req.accessToken) {
return next();
}
app.models.Customer.findById(req.accessToken.userId, function(err, user) {
if (err) {
return next(err);
}
if (!user) {
return next(new Error('No user with this access token was found.'));
}
var loopbackContext = loopback.getCurrentContext();
if (loopbackContext) {
loopbackContext.set('currentUser', user);
}
next();
});
});
/common/models/customer.js
var loopback = require('loopback');
module.exports = function(Customer) {
Customer.observe('before save', function checkPermission(ctx, next) {
var context = loopback.getCurrentContext();
var currentUser = context && context.get('currentUser');
console.log(currentUser);
next();
});
};
謝謝,我試圖添加代碼server.js但沒有改變。仍爲null上下文。太奇怪了。這與使用Postgres有關嗎?有關於MongoDB和MySQL的討論列表有一個null上下文錯誤。 – user798719
我要從零開始嘗試一個總的準系統項目,看看我是否仍然得到一個null上下文。如果是這樣,我把它稱爲一個錯誤,並轉移到其他生產用途。 – user798719
更新,我有一個準系統項目和'保存'前的loopback.getCurrentContext()確實爲null。不知道這只是我還是一個錯誤。我正在使用Postgres連接器。 – user798719