Я настраиваю бэкэнд-сервер и хочу сделать метод put в роутере.Я использую Mongoose Express в бэкэнде.
Когда я пытаюсь обновить некоторые данные в моей БД с помощью .save (), я получаю сообщение об ошибке:
events.js: 174бросить эр;// Необработанное событие 'error' ^
TypeError: PC.save не является функцией
Я пытаюсь использовать другой метод с .findOneAndUpdate (), но это успех, но это нене обновлять мою базу данных.
const express = require('express')
const routes = express()
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/myapp', { useNewUrlParser: true });
const db = mongoose.connection;
db.on("error", console.error.bind(console, "connection error"));
db.once("open", function(callback){
console.log("Connection Succeeded");
});
var PC = require("../models/PC");
//...here is my get delete etc..
Это мое первое решение с помощью findOneAndUpdate
routes.put('/:id', (req, res) => {
mongoose.set('useFindAndModify', false);
PC.findOneAndUpdate(
{ 'title': req.body.title },
{ '$set': {'description': req.body.description} },
{'new': true },
function(err, PC) {
if (err) {
console.log('ERROR WHILE PUT PC');
throw (err);
} else {
console.log('Succes set');
res.status(200).send(PC)
}
}
);
})
И это мое второе решение
routes.put('/:id', (req, res) => {
PC.findById(req.params.id, 'title description', function (error, pc) {
if (error) { console.error(error); }
PC.title = req.body.title
PC.description = req.body.description
console.log(PC);
PC.save(function (error) {
if (error) {
console.log(error)
}
res.send({
success: true,
message: 'PC saved successfully!',
PC: req.body
})
})
})
})
module.exports = routes;
моя модель:
var mongoose = require("mongoose");
var Schema = mongoose.Schema;
var PCSchema = new Schema({
id: Number,
brand: String,
cpu: String,
memory: Number,
type: String,
vga: String,
score: Number,
title: String,
description: String
});
var PC = mongoose.model("PC", PCSchema);
module.exports = PC;