Мы хотим добавить поддержку нескольких арендаторов в наше приложение с экспресс-поддержкой (NodeJS).Мы выбрали express-http-context для распространения контекста клиента на дочерние вызовы.Мы видим странное поведение, что контекст недоступен при попытке получить его при обратном вызове базы данных.примечание: информация об арендаторе задается на корневом уровне обработки запроса.
Контекст арендатора теряется при попытке доступа к деталям в обратном вызове базы данных.
Заранее спасибо.
Редактировать 1: добавив код здесь
//app.js
const express = require('express');
const httpContext = require('express-http-context');
const app = express();
const settingsController = require('./controller/settings')
app.use(httpContext.middleware);
app.use((req, res, next) => {
httpContext.ns.bindEmitter(req);
httpContext.ns.bindEmitter(res);
httpContext.set('tenant', 'falcon');
next();
});
app.get('/api/v1/settings', settingsController.getSettings);
//SettingsController.js
const httpContext = require('express-http-context');
const mongodb = util.getDatabaseConnection();
const getSettings = function (req, res) {
const db = dataSource.getDb();
console.log('Tenant id here ', httpContext.get('tenant')); //prints 'falcon'
mongodb
.collection('settings')
.findOne({_id: req.param.id}, (err, doc) => {
if(err) {
//do more validations and other stuffs
const tenant = httpContext.get('tenant'); //tenant is not available
res.status(200).json({found: false});
} else {
res.status(200).json({found: true, data: docs});
}
})
}