多态性节点.JS

Bob*_*Bob 7 javascript node.js

我用nodeJS开发了一个restful API.

    exports.postCreature = function (req, res) {

    var creature = new Creature({
            name: req.body.name, id_user: req.user._id
        });

    creature.save(function (err) {
        if (err)
            res.status(400).send(Error.setError('impossible to save the your creature', err));
        else
            res.status(201).send();
    });
};

//CODE DUPLICATE 
exports.createCreature = function(user, callback) {
    console.log('Creature created');
    var creature = new Creature({
        name: user.username, id_user: user._id
    });

    creature.save(function (err) {
        if (err)
           callback(err, null);
        else
            callback(null, creature);
    });
}
Run Code Online (Sandbox Code Playgroud)

这两个函数执行相同的代码但不具有相同的参数.我想避免在我的代码中重复.

怎么做才能避免重复我的代码?

KJ *_*ice 7

我会创建另一个函数来处理冗余:

function createCreature (creatureName, user, callback) {
    console.log('Creature created');
    var creature = new Creature({
        name: creatureName, id_user: user._id
    });

    creature.save(function (err, creature) {
        if (err)
           callback(err, null);
        else
            callback(null, creature);
    });
}
Run Code Online (Sandbox Code Playgroud)

然后在你的其他功能:

exports.postCreature = function (req, res) {
    createCreature(req.body.name, req.user, function (err, creature) {
        if (err)
            res.status(400).send(Error.setError('impossible to save the your creature', err));
        else
            res.status(201).send();
    };
};

exports.createCreature = function(user, callback) {
    console.log('Creature created');
    createCreature (user.username, user, callback);
}
Run Code Online (Sandbox Code Playgroud)