Я работаю с Sequelize и Express / Node.У меня есть модель ProjectImages
, которая представляет собой список изображений каждой модели Project
.Из моей конечной точки API /api/projectsimages
я делаю запрос GET
:
// Express router
router.get('/api/projectsimages/:id', function(req, res, next) {
models.ProjectImages.findAll({
where: {
parentId: req.params.id,
},
}).then((response) => {
return res.send(JSON.stringify(response));
});
});
И во внешнем интерфейсе я получаю этот JSON:
{
"Projects": [
{
"id": 1,
"url": "https://picsum.photos/200/300/?random",
"parentId": 1
},
{
"id": 2,
"url": "https://picsum.photos/200/300/?random",
"parentId": 1
},
{
"id": 3,
"url": "https://picsum.photos/200/300/?random",
"parentId": 1
},
]
}
Теперь во внешнем интерфейсе я удаляю строку с { id: 2 }
из массива ProjectImages
:
ProjectImages = ProjectImages.filter((item) => {
return item.id !== 2;
});
Итак, теперь ProjectImages:
{
"ProjectImages": [
{
"id": 1,
"url": "https://picsum.photos/200/300/?random",
"parentId": 1
},
{
"id": 3,
"url": "https://picsum.photos/200/300/?random",
"parentId": 1
},
]
}
Затем я отправляю его обратно на /api/projectsimages/1
с PUT
:
return fetch('/api/data', {
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
method: 'PUT',
body: JSON.stringify(ProjectImages),
});
Итак, мой вопрос: учитывая этот JSON, который я отправляю, как я могу указать Express Router удалить строки, которые я удалил из массива во внешнем интерфейсе?Я полагаю, что могу сделать запрос в маршрутизаторе, чтобы получить все элементы с { parentId: 1 }
, сравнить результат с JSON, который я отправляю, и удалить те, которые не присутствуют во входящем массиве.Но это не кажется очень эффективным.
Какой самый лучший и правильный способ сделать это?
// Express router
router.put('/api/projectImages/:id', function(req, res, next) {
// ???
});