Javascript 多态性节点
我用nodeJS开发了一个restfulapiJavascript 多态性节点,javascript,node.js,Javascript,Node.js,我用nodeJS开发了一个restfulapi 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
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);
});
}
这两个函数执行相同的代码,但参数不同。
我希望避免代码重复
如何避免代码重复?我将创建另一个函数来处理冗余:
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);
});
}
然后在其他功能中:
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);
}
从您的代码来看,这两个函数的第一个参数都是对象,但具有不同的属性(您可以检查它们的存在),第二个参数是XHR或函数的实例,这将是检测操作的另一种方式。耶!很高兴,我能帮忙!