2016-03-23 10 views
0

Ich mache eine Ticket-API mit NodeJS + ExpressJS. In einer PUT-Methode zum Ändern eines Tickets, das erstellt wurde, bevor ich den nächsten Fehler habe.Speichern ist keine Funktion in ExpressJS

Fehler

/home/ismael/projects/nodejs-ticketing/routes/ticket.js:38 
     item.save(function(err){ 
     ^

TypeError: item.save is not a function 
    at /home/ismael/projects/nodejs-ticketing/routes/ticket.js:38:12 
    at Query.<anonymous> (/home/ismael/projects/nodejs-ticketing/node_modules/mongoose/lib/query.js:2169:28) 
    at /home/ismael/projects/nodejs-ticketing/node_modules/kareem/index.js:177:19 
    at /home/ismael/projects/nodejs-ticketing/node_modules/kareem/index.js:109:16 
    at _combinedTickCallback (node.js:370:9) 
    at process._tickCallback (node.js:401:11) 
[nodemon] app crashed - waiting for file changes before starting... 

Die Funktion ich das Ticket zu ändern, rufen Sie die nächste:

ticket.js

_modifyPutTicket = function(req, res){ 
    var query = Ticket.findOne().where('issue').equals(req.params.issue).lean(); 

    log.debug('New data: ' + JSON.stringify(req.body)); 

    query.exec(function(err, item){ 
     if(err) 
     res.send(err); 

     log.debug('Issue: ' + JSON.stringify(item)); 

     item.title   = req.body.title; 
     item.description = req.body.description; 

     log.debug('Issue modified: ' + JSON.stringify(item)); 

     item.save(function(err){ 
     if(err){ 
      log.debug('Issue error: ' + err); 

      res.send(err); 
     }else{ 
      res.send(item); 
     } 
     }); 
    }); 
    }; 

app.put('/api/ticket/:issue/', _modifyPutTicket); 

ich das Mungo Tutorial gefolgt zu aktualisieren ein Dokument in einem MongoDB gespeichert. Was mache ich falsch?

Vielen Dank.

Antwort

3

Das Problem ist Ihre Verwendung von Lean() beim Erstellen der Abfrage. Dokumente, die mithilfe von Lean gefunden wurden, werden als JavaScript-Objekte anstelle von vollständigen Mongoose-Dokumenten zurückgegeben und haben keine Getter/Setter.

http://mongoosejs.com/docs/api.html#query_Query-lean