保存不是ExpressJS中的功能

时间:2016-03-23 17:29:47

标签: javascript node.js express mongoose

我正在使用 NodeJS + ExpressJS 进行票务API。在PUT方法中修改在我有下一个错误之前创建的故障单。

错误

ArgumentException

我调用修改故障单的功能是下一个:

ticket.js

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

我按照mongoose教程更新了 _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); 中存储的文档。我做错了什么?

谢谢你。

1 个答案:

答案 0 :(得分:3)

问题是您在构建查询时使用lean()。使用精简版找到的文档将作为Javascript对象而不是完整的Mongoose文档返回,并且没有任何getter / setter。

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