У меня есть коллекция с продуктами. Коллекция структурирована следующим образом:
{
"_id": "150",
"name": "Milk",
"description": "Skimmed",
"price": "10",
},
Я хочу добавить новый объект в этот массив, называемый «рейтинги», который будет просто принимать «электронная почта» и «рейтинги»
Это будет выглядеть так:
{
"_id": "150",
"name": "Milk",
"description": "Skimmed",
"price": "10",
"ratings": [
{
"email": "xyz@mail.com",
"rating": "5"
}
]
}
Тем не менее, я хочу, чтобы «Молоко» имело больше оценок, чем один. Так что я могу l oop через рейтинги на входе и вывести среднее. По сути, каждый раз, когда пользователь оценивает «молоко», я хочу, чтобы его добавили в тот же массив? Я новичок в этом и, следовательно, не могу объяснить в конкретных c условиях. В основном:
{
"_id": "150",
"name": "Milk",
"description": "Skimmed",
"price": "10",
"ratings": [
{
"email": "xyz@mail.com",
"rating": "5"
},
{
"email": "abc@mail.com",
"rating": "3"
},
{
"email": "def@mail.com",
"rating": "1"
},
]
}
Используя Express, я создал router.post
, который выглядит следующим образом.
router.post('/', async (req, res) => {
const rate = await loadProducts();
try {
rate.insertOne(
{
"ratings":
[{
"email":req.body.email,
"rating":req.body.rating
}]
});
} catch (error) {
console.log(error);
}
Это явно не способ сделать это, поскольку публикация через него создает новый массив в коллекции. Я хочу, чтобы он в основном нашел продукт, используя "_id"
, то, что я предоставлю, используя внешний интерфейс, и добавлю к нему 'оценки' "_id"
Крайне извиняюсь за мое объяснение новичка. Пытаюсь понять это.
Любая помощь будет высоко оценена.