回调/承诺布尔检查的实现

时间:2016-05-07 00:47:34

标签: javascript node.js express

目前我有以下回调系统:

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函数来保存任务?

此代码目前有效,但我觉得应该有更简单的方法吗?我怎么能用诺言来达到同样的目的呢?

提前致谢。

1 个答案:

答案 0 :(得分:0)

很奇怪你创建对象而不是Schemas。但是"每个人都是一个不同的世界",这是我的方式:

task.save(function(error, data){
 if (error) {
 trow error;
 } else {
 //Make whatever you want here with data
 });