Взято из Этот учебник MERN ...
У меня есть схема mon goose с 4 полями:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
let Todo = new Schema({
name: {
type: String,
required: true
},
description: {
type: String,
required: false
},
comments: {
type: String,
required: false
},
done: {
type: Boolean,
required: true
},
});
module.exports = mongoose.model('Todo', Todo);
Я звоню по этому update
route:
todoRoutes.route('/update/:id').post(function(req, res) {
Todo.findByIdAndUpdate(req.params.id, req.body, function(err, todo) {
if (err)
res.status(400).send('Updating item failed: ' + err);
else
todo.save().then(todo => {
res.json('Item updated!');
}).catch(err => {
res.status(400).send("Update not possible: " + err);
});
});
});
со следующим телом:
{
"name": "bla"
}
и получает статус «ok», и документ обновляется, как я хотел. Тем не менее, запуск того же update
с дополнительным полем также получает статус «ОК», хотя он должен был потерпеть неудачу. IMO:
{
"name": "bla",
"unwanted_field": true
}
- Поле не отображается, когда я
GET
БД, но он все равно возвращается без ошибок. Почему? - Почему для обновления не требуются «обязательные» поля и принимаются любые обновления?