这是我的代码
.profile
我想在我的回复字段contvideo中插入事件的用户列表。
我使用了糟糕的回调?
更新2016年3月16日
我的解决方案是在函数中调用函数回调查找用户事件。
我的函数找到用户事件。
Event.find({ start_date: { $lte: new Date() }, end_date: { $gte: new Date() }, isDeleted: false }).limit(10).sort({ created_at: 'desc' }).populate('moderator').exec(function (err, events) {
if (err) throw err;
var response = [];
events.forEach(function (ev) {
var moderatorName = ev.moderator.facebook.name;
User.find({ currentEvent: ev._id }).exec(function (err, users) {
callback(null, users);
});
if (ev.isFanPage)
moderatorName = ev.fanPageName;
response.push({ eventId: ev._id, title: ev.name, description: ev.description, thumb: ev.thumb, moderator: moderatorName, moderatorFbId: ev.moderator.facebook.id, countPicture: ev.numberOfUploadedImages, countVideo: users });
});
next(response);
});
我的过程活动是
exports.getEventUsers = function (id, next, callback) {
console.log("id evento " + id);
User.find({ currentEvent: id }).exec(function (err, users) {
if (err)
res.send("ERROR");
callback(users);
});};
答案 0 :(得分:0)
您可以在next
句柄中放入错误,并让它由错误中间件处理。
Event.find({ start_date: { $lte: new Date() }, end_date: { $gte: new Date() }, isDeleted: false }).limit(10).sort({ created_at: 'desc' }).populate('moderator').exec(function (err, events) {
if (err)
next(err);
var response = [];
events.forEach(function (ev) {
var moderatorName = ev.moderator.facebook.name;
User.find({ currentEvent: ev._id }).exec(function (err, users) {
if err
next(err);
// DO whatever you want to with users
});
if (ev.isFanPage)
moderatorName = ev.fanPageName;
response.push({ eventId: ev._id, title: ev.name, description: ev.description, thumb: ev.thumb, moderator: moderatorName, moderatorFbId: ev.moderator.facebook.id, countPicture: ev.numberOfUploadedImages, countVideo: users });
});
next(response);
});
app.use(function(err, req, res, next){
//handle the errors here.
console.log(err);
res.send(err);
});