Добрый день,
Я создаю api, используя node.js, express. js, и данные сохраняются в mongodb.
внутри моего маршрута
const { Tag } = require('../models/tag')
router.patch('/', async (req, res) => {
const { tags } = req.body
tags.forEach(async tag => {
const filter = { name: tag }
const option = { upsert: true }
const update = { $inc: { commonality: 1 } }
await Tag.findOneAndUpdate(filter, update, option)
});
return res.json({})
})
Пример
tags = [ 'blood', 'test']
Но сохраняет (общность: 2) здесь произошло странное .
//document 1
{
"name" : "blood",
"commonality" : 2
}
//document 2
{
"name" : "test",
"commonality" : 2
}
Вместо (общность: 1)
//document 1
{
"name" : "blood",
"commonality" : 1
}
//document 2
{
"name" : "test",
"commonality" : 1
}
Когда тег по полю имени уже существует, я просто обновлю общность этого существующего приращения тега до 1 шага. В противном случае я вставлю новый документ тега с общностью 1.
Что-то не так с зацикливанием? Потому что без al oop и только одного тега он работает хорошо. Или зацикливание ожидаемого сохранения - не лучшая идея? Ваша помощь очень ценится. Берегите всех.