2015-04-15 10 views
7

Ich entwickle eine erholsame API mit nodeJS.Polymorphismus nodeJS

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); 
    }); 
} 

Die beiden Funktionen führen denselben Code aus, aber nicht mit denselben Parametern. Ich möchte Doppelungen in meinem Code vermeiden.

Wie kann ich vorgehen, um Doppelungen meines Codes zu vermeiden?

+0

aus dem Code, sieht es aus wie das erste Argument zu jeder Funktion ist ein Objekt , aber mit anderen Eigenschaften (Sie könnten nach ihrer Anwesenheit überprüfen) und das zweite Argument ist eine * instanceof * XHR oder Funktion, die eine andere Möglichkeit wäre, zu erkennen, was zu tun ist. – Touffy

Antwort

7

Ich würde eine andere Funktion erstellen, um die Entlassungen zu umgehen:

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); 
    }); 
} 

Und dann in der anderen Funktionen:

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); 
} 
+0

Das funktioniert gut! – Bob

+0

Yay! Froh, dass ich helfen konnte! –