2016-03-23 2 views
0

Я использую API для продажи билетов, используя NodeJS + ExpressJS. В методе PUT для изменения билета, который был создан до того, как я буду иметь следующую ошибку.Сохранить не является функцией в ExpressJS

Ошибка

/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... 

Функция Звоню изменить билет является следующий:

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

Я следовал мангуста учебник, чтобы обновить документ, хранящийся в MongoDB. Что я делаю неправильно?

Спасибо.

ответ

3

Проблема заключается в том, что вы используете lean() при построении запроса. Документы, найденные с использованием lean, возвращаются как объекты Javascript вместо полных документов Mongoose и не имеют каких-либо getters/seters.

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

Смежные вопросы