Я создаю веб-приложение для стека MEAN.
У меня есть модель в mongoose
, подобная этой.Имя модели analyses
, внутри которого есть свойство call points
, которое является еще одним небольшим именем модели analysis
//model file
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var analysis = new Schema({
ref_id: String,
ele_name: String,
pos_x: Number,
pos_y: Number,
pos_pix_x: Number,
pos_pix_y: Number,
});
var analyses = new Schema({
img_id: String,
store_file_name:String,
points: {
type: [analysis],
default: undefined
},
});
module.exports = mongoose.model('analyses', analyses);
В базе данных после создания записи.там что-то вроде этого
Как видите, внутри идентификатора analyses (5bb...820e)
есть массив точек (analysis
), каждый из которых имеет свой собственный идентификатор ( 5bb...26d)
Теперь, если я хочу обновить это.Я использую ExpressJS
для определения API обновления сервера
// API define file
var express = require('express');
var analysesRoutes = express.Router();
// Require Item model in our routes module
var Analyses = require('../models/analyses');
// Defined update route
analysesRoutes.route('/update/:id').put(function (req, res) {
Analyses.findById(req.params.id, function(err, analyses) {
if (!analyses)
return next(new Error('Could not load Document'));
else {
for ( item of Object.keys(req.body)){
analyses[item] = req.body[item];
}
analyses.save().then(analyses => {
res.json({...analyses, status: 200});
})
.catch(err => {
res.status(400).send("unable to update the database");
});
}
});
});
Но моя проблема здесь в том, что если я хочу обновить только 1 analysis
пункт, я должен отправитьзапрос на обновление большого analyses
объекта (вызов id 5bb...820e
).Примерно так:
//service file
updateAnalyses(newObj, id) {
const uri = 'http://localhost:4000/analyses/update/' + id;
this
.http
.put(uri, newObj)
.subscribe(res => console.log('Done'));
}
// Where newObj here is a big analyses object contains all the unnecessary detail + the point need to be updated
На самом деле, у этой точки тоже есть идентификатор (5bb..26d
), есть ли в любом случае обновление непосредственно к этой точке анализа ??