Я пытаюсь обновить модель, которую я создал, используя метод mon goose findByIdAndUpdate. Однако я продолжаю получать сообщение об ошибке, что модель атрибута, который я пытаюсь изменить, не определена. ниже приведен код.
Вот моя схема эскиза
//create new schema
const Schema = mongoose.Schema;
//sketch schema with 2 fields
const sketchSchema = new Schema({
name: { type: String, default: 'sketch.js' },
isPrivate: {type: Boolean, default: true }
}, {
timestamps: true, //this means it automatically let you know when it was created and modified
})
//create a model from the user schema def to use it
const Sketch = mongoose.model('Sketch', sketchSchema);
module.exports = Sketch;
Мой код API
router.route("/sketches/:id").put((req, res) => {
//find sketch by id and ONLY update privacy field
Sketch.findByIdAndUpdate(req.params.id,
{
$set: {isPrivate: req.body.isPrivate}
},{
new: true
})
.then(sketch => {
sketch.save()
.then(() => res.json(sketch))
})
.catch(err => res.status(400).json('Error: ' + err))
})
Вот код моего серверного приложения
//create instances of express and CORS
const express = require('express');
const cors = require('cors');
const mongoose = require('mongoose');
//this
require('dotenv').config()
//create server app
const app = express();
//what is this line saying
const port = process.env.PORT || 5000;
const sketchRouter = require('./routes');
app.use('/exercises', sketchRouter);
//Middleware
app.use(cors());
app.use(express.json());
//mongoDB database set up
const uri = process.env.ATLAS_URI;
mongoose.connect(uri, {useNewUrlParser: true, useCreateIndex: true})
const connection = mongoose.connection;
connection.once('open', () => {
console.log("MongoDB DB est. successfully")
})
//Start the server
app.listen(port, () => {
console.log(`Server is running on port: ${port}`);
});
Я использую почтальон для проверки этого запроса на размещение заданного c эскиза по его идентификатору объекта и передаю в теле запроса на изменение поле IsPrivate эскиза от истинного до ложного
Изображение тела запроса с использованием здесь почтальона
Почтальон положил изображение запроса