2016-07-25 10 views
3

Die folgende Funktion ist für ein "Sammlungsmodell".Bedingtes Aktualisieren/Löschen eines Dokuments im Backend. Sollte ich? Ordne ich eine HTTP-Methode PUT, POST oder DELETE zu?

Bei bestimmten Bedingungen möchte ich das Dokument entweder löschen oder aktualisieren.

Sollte ich einen PUT oder DELETE verwenden?

Ich könnte sie trennen und Überprüfung/Bedingungen auf dem Client überprüfen, aber das scheint weniger trocken.

Ich muss dem Client und dem Server zusätzliche Codezeilen hinzufügen, um dasselbe zu erreichen.

CollectionSchema.statics.kill = function(o, cb) { 
     return Collection 
     .findAsync(o) 
     .then(function(existing) { 
      if (existing.length && (existing[0].vote !== 0 || existing[0].favorite == true)) { 
      return Collection 
       .findByIdAndUpdate(o, { 
       collected: !existing[0].collected 
       }, { 
       new: true 
       }) 
       .then(function(updated) { 
       console.log('updated ', updated) 
       return updated; 
       }).catch(function(err) { 
       return err; 
       }) 
      } else if (existing.length && existing[0].vote == 0 && existing[0].favorite == false) { 
      return Collection 
       .removeAsync({ 
       _id: existing[0]._id 
       }) 
       .then(function(deleted) { 
       return { 
        message: 'deleted collection' 
       } 
       }).catch(function(err) { 
       return err; 
       }) 
      } 
     }).catch(function(err) { 
      return err; 
     }) 
    }; 

Antwort

4

Ich denke, die beste Option, um das einfache REST-Modells wäre die Verwendung (a PUT das Dokument und ein DELETE zu entfernen, das Dokument zu aktualisieren).

Dann rufen Sie von Ihrem Client abhängig von Ihren Bedingungen entweder die Update- oder die Remove-Methode auf, wie Sie sagen. Um dieses Konzept zu verbessern, können Sie dem Kunden eine negative Antwort bezüglich des Ereignisses DELETE senden, wenn das Dokument nicht entfernt werden kann.

+0

Wahrscheinlich so, es scheint nur ein weniger trockener Weg. – NoobSter

+1

In manchen Fällen muss man zwischen DRY und KISS wählen, ich bevorzuge KISS, aber das ist ein Standpunkt. – Odonno