目前我有以下回调系统:
var saveTask = function(err, result) {
if (err) return callback(err, result);
var newid = mongoose.Types.ObjectId();
var task = new Task({
_id: newid,
taskname: req.body.name,
teamid: req.body.team,
content: req.body.content,
creator: req.user.userId
});
task.save(function (err) {
if (!err) {
log.info("New task created with id: %s", task._id);
return callback(null, task);
} else {
if(err.name === 'ValidationError') {
return callback('400', 'Validation error');
} else {
return callback('500', 'Server error');
}
log.error('Internal error(%d): %s', res.statusCode, err.message);
}
});
};
if (req.body.team) {
valTeam.isMember(req.body.team, req.user._id, function (err, done) {
if (err) {
saveTask('403', 'Not the owner or member of this team');
} else {
saveTask(null, true);
}
});
} else {
saveTask(null, true);
}
valTeam.isMember
exports.isMember = function(teamid, userid, callback) {
Team.find({'_id':teamid, $or:[{'creator': userid }, {'userlist': { $in : [userid]}}]}, function(err, result) {
if (err) return err;
console.log(result);
if (!result.length)
return callback('404', false);
else
return callback(null, true);
});
}
简而言之,如果team
发送了POST
,我正在valTeam.isMember
检查该用户是否是该ID的成员。如果用户是团队成员,我是否使用正确的语法和最佳方法回调我的saveTask
函数来保存任务?
此代码目前有效,但我觉得应该有更简单的方法吗?我怎么能用诺言来达到同样的目的呢?
提前致谢。
答案 0 :(得分:0)
很奇怪你创建对象而不是Schemas。但是"每个人都是一个不同的世界",这是我的方式:
task.save(function(error, data){
if (error) {
trow error;
} else {
//Make whatever you want here with data
});