2016-07-27 14 views
1

Ich habe eine mongodb Datenbank von LivingArea Objekte. Ich möchte ein Objekt aus der db mit seiner ID wie folgt entfernen:Delete item von db mit ID von Route Javascript

'use strict'; 

exports = module.exports = (LivingAreaModel) => { 
    return function* (id) { 
     let h = this.request.header, 
      b = this.request.body, 
      rec = yield LivingAreaModel.findById({ 
       _id: id 
      }).remove().exec(); 
     this.success({ 
      livingAreas: rec 
     }); 
    }; 
}; 

exports[ '@singleton' ] = true; 
exports[ '@require' ] = [ 
    'model/livingAreaModel' 
]; 

Ich benutze eine Route wie folgt:

{ 
    "method": "delete", 
    "path": "/livingarea/delete/:id", 
    "handler": "handlers/livingarea/remove.js", 
    "validate": [ { 
     "param": "id", 
     "type": "body", 
     "validators": [ 
     "notEmpty", 
     "isString" 
     ] 
    }] 
    } 

Aber als ich den Anruf wie folgt machen: http://localhost:8000/api/v1/livingarea/delete/5783c4da66ac31c814911400 die ID verwenden von einem objekt von der db, erhalte ich den fehler:

{"status":"error","error":{"code":400,"msg":"id is empty"}} 

Wo könnte das problem sein?

Vielen Dank im Voraus!

+0

Wird der Artikel nicht gelöscht? –

+0

Nein, ist es nicht. Deshalb erhalte ich den Fehler, ich denke, – AvramPop

+0

Haben Sie überprüft, ob es nicht schon in einer früheren Anfrage gelöscht wurde, indem Sie auf mongodb am Terminal zugreifen? –

Antwort

0

Ich habe endlich die Antwort gefunden. Die Methode findById erfordert eine ID und kein Objekt. Mehr, die Route muss so aussehen:

{ 
    "method": "delete", 
    "path": "/livingarea/delete/:id", 
    "handler": "handlers/livingarea/remove.js" 
    }