保存私はPUT要求を行う際にノードが私にこのエラーが表示されます。Nodejs - エクスプレス - マングース:PUTリクエストに問題のある方法
TypeError: product.save is not a function
(コントローラ/ product.jsでsave
機能を参照)
これは文書を更新するための正しい形式ですが、この問題があります。
私は、コードの一部を共有しています:
app.js
var api = express.Router();
api.route('/products')
.get(ProductCtrl.findAll)
.post(ProductCtrl.add);
api.route('/products/:isbn')
.get(ProductCtrl.findByISBN)
.delete(ProductCtrl.delete)
.put(ProductCtrl.update);
app.use('/api', api);
モデル/ product.js
var mongoose = require('mongoose');
var Schema = mongoose.schema;
var productSchema = mongoose.Schema({
isbn: {type: String},
title: {type: String},
author: {type: String},
template: {type: String},
active: {type: Number} //1 - Active, 0 - Inactive
});
module.exports = mongoose.model('Product', productSchema);
コントローラ/ product.jsを
//PUT - Update the product by ISBN
exports.update = function(req, res){
Product.find(req.params.isbn, function(err, product){
if(!product) res.status(404).send({message: 'Product not exits'});
console.log("PUT - /products/" + req.params.isbn);
product.isbn = req.body.isbn;
product.title = req.body.title;
product.author = req.body.author;
product.active = req.body.active;
product.template = req.body.template;
product.save(function(err){
if(err) return res.send(500,err.message);
console.log("Successfully updated: " + req.body.isbn);
res.status(200).json(product);
});
});
};
Rajesh Danに感謝します。私はModel.findOneAndUpdate()を使用しており、すべて正常に動作します。 –
もちろん、お手伝いします。 @AlfonsoSánchez! :) –