사람, 각 API 호출에 대한 트랜잭션 ID를 설정하려고합니다. 다음 작품 : 나는 (몽고에서 반환) 추가 정보를 추가하려고 할 때NodeJS Express, 트랜잭션 ID 추가
이var cls = require('continuation-local-storage');
var uuid = require('node-uuid');
var namespace = cls.createNamespace('foo');
var tokenMiddleware = function tokenMiddleware(req, res, next){
namespace.bindEmitter(req);
namespace.bindEmitter(res);
namespace.run(function() {
namespace.set('tid', tid);
next();
});
};
지금, 그것은 문맥 손실 :
var cls = require('continuation-local-storage');
var uuid = require('node-uuid');
var namespace = cls.createNamespace('foo');
var tokenMiddleware = function tokenMiddleware(req, res, next){
mongo.fetchId(authId, function (result) {
namespace.bindEmitter(req);
namespace.bindEmitter(res);
namespace.run(function() {
namespace.set('tid', tid);
namespace.set('somethingfromDB',result.something);
next();
});
});
};
트랜잭션 ID가 정의되지 않은, 아래로 더 사용할 수 없습니다 ... 어떻게 첫 번째 예제가 작동하고 두 번째 예제는 작동하지 않습니까?
내가 뭘 잘못하고 있니? 나는 문제가 다음() 컨텍스트에서 뭔가를해야한다고 생각한다. Express v4.
감사합니다.
tid는 어디에 정의되어 있습니까? – DrakaSAN
'result' 객체가 실제로'something' 속성을 가지고 있습니까? –
여기에 언급 된 코드는 완전한 코드 예제를 게시해야한다고 제안합니다. 나는 최소한의 표현/몽고 설정을 의미합니다. – nha