// Я хочу сделать API, где я могу редактировать массив изображений.Например, я загрузил 5 изображений для определенного поля, а затем хочу отредактировать эти изображения, такие как удалить 3 изображения из 5 изображений и добавить 3 новых изображения, а предыдущие 2 должны остаться прежними.
// Я попробовал традиционный методдля обновления изображений, но все изображения переопределяются.Таким образом, предыдущие 5 удаляются и получают новые 3 изображения, но я хочу, чтобы новые 3 изображения и 2 предыдущих остались.
// Функция добавления данных.
const setData = (req, res) => {
console.log(req.body);
if (!req.files) res.send({ success: 0, msg: "Please upload a valid image" });
const newProperty = {
userid: req.body.userid,
address: req.body.address,
price: req.body.price,
bedroom: req.body.bedroom,
bathroom: req.body.bathroom,
livingroom: req.body.livingroom,
propertytype: req.body.propertytype,
propertynumber: req.body.propertynumber,
streetname: req.body.streetname,
city: req.body.city,
images: req.files.images,
floorPlanImages: req.files.floorPlanImages,
epcImages: req.files.epcImages,
country: req.body.country,
postalcode: req.body.postalcode,
description: req.body.description
};
Property.create(newProperty, (err, property) => {
if (err) sendError(req, res, err);
else {
sendData(req, res, property);
}
});
};
// Сохранение свойств в базе данных с ожидающим статусом.
router.post(
"/api/addProperty",
upload.fields([
{
name: "images",
maxCount: 10
},
{
name: "floorPlanImages",
maxCount: 10
},
{
name: "epcImages",
maxCount: 10
}
]),
(req, res) => {
setData(req, res);
}
);
// Функция для редактирования данных.
const editData = (req, res, id) => {
if (!req.files) res.send({ success: 0, msg: "Please upload a vaalid image" });
Property.findOne({ _id: id }).then(Property => {
Property.address = req.body.address;
Property.price = req.body.price;
Property.bedroom = req.body.bedroom;
Property.bathroom = req.body.bathroom;
Property.livingroom = req.body.livingroom;
Property.propertytype = req.body.propertytype;
Property.propertynumber = req.body.propertynumber;
Property.streetname = req.body.streetname;
Property.city = req.body.city;
property.images = req.files.images;
property.floorPlanImages = req.files.floorPlanImages;
property.epcImages = req.files.epcImages;
Property.country = req.body.country;
Property.postalcode = req.body.postalcode;
Property.description = req.body.description;
Property.save()
.then(updated => {
res.send(200).json(updated);
})
.catch(err => {
res.send(err);
});
});
};
// Редактирование формы свойства
router.post(
"/api/editProperty",
upload.fields([
{
name: "images",
maxCount: 10
},
{
name: "floorPlanImages",
maxCount: 10
},
{
name: "epcImages",
maxCount: 10
}
]),
(req, res) => {
editData(req, res, req.body.id);
}
);
So , i want to to edit the images in such a way that if there is 5 images and i remove 3 image and add 3 new , the previous 2 should stay there.