Я пытаюсь отобразить общее количество сообщений для входящих сообщений пользователя в моем layout
.Я думал, что мне нужно использовать Express 'dynamicHelpers
, чтобы сделать это, но в Express <= 2.x, это не асинхронные вызовы, и мне нужно выполнить некоторую асинхронную обработку внутри них: в данном случае, вызов базы данныхс обратным вызовом. </p>
Я пытаюсь сделать следующее, чтобы поместить счетчик в мой сеанс, который сам помещается в dynamicHelper
, доступный для представлений.Однако из-за асинхронного характера этих обратных вызовов, session.unreadMessages
всегда неопределен.
messageCount: function(req, res) {
var Messages = require('../controllers/messages'),
messages = new Messages(app.set('client'));
if(req.session.type === 'company') {
messages.getCompanyUnreadCount(req.session.uid, function(err, result) {
req.session.unreadMessages = result[0].unread;
});
} else if(req.session.type === 'coder') {
messages.getCoderUnreadCount(req.session.uid, function(err, result) {
req.session.unreadMessages = result[0].unread;
});
}
return;
}
Есть ли другой или лучший способ выполнить эту задачу?
Следует отметить, что req.session.unreadMessages
определяется (по крайней мере, в пределах этого обратного вызова), но не определено, когда session
вызывается с помощью помощника.