Я создаю серверную часть приложения CRUD. В настоящее время у меня есть настройка маршрута POST для /diagrams/update:id
, где я могу переопределить документ MongoDB с основным текстом, который я отправляю через Почтальон.
Я могу успешно обновить документ, но когда я пытаюсь обновить только одну информацию внутри документа, все остальное удаляется.
Я хочу, чтобы мой код: 1) обнаружил, отличается ли то, что я пытаюсь изменить, от данных в базе данных, 2) только если они отличаются, обновите запись, 3) если нет изменений, не обновляйте и сохранить текущие данные в базе данных.
Я пытался сделать что-то вроде
if (diagram.name !== req.body.name) {
diagram.name = req.body.name}
но это означало бы, что я должен написать эту логику для каждого отдельного изменения.
server.js
router.route('/diagrams/update/:id').post((req, res)=> {
mySchema.findById(req.params.id, (err, diagram) => {
if (!diagram)
return next(new Error('Could not load doc!'))
else {
// I tried something like
// if (diagram.name !== req.body.name) {
// diagram.name = req.body.name}
// but that only works one at a time
diagram.name = req.body.name;
diagram.creator = req.body.creator;
diagram.customer = req.body.customer;
diagram.save().then( diagram => {
res.json('Update done!')
}).catch(err => {
res.status(400).send('Update faileddddd')
})
}
})
})
MySchema.js
const mongoose = require( 'mongoose');
const Schema = mongoose.Schema;
let mySchema = new Schema({
name: {
type: String
},
creator: {
type: String
},
customer: {
type: String
}
}, {collection: `fivo`})