@Dd_bb Посоветуй как, не используя транзакции, организовать изменение инвентаря пользователя?

За источником при этом следить не нужно, смотрю концепцию корзины, но описанный вариант не достаточен.

UserSchema
userId: Number,
...
storage: [ItemSchema]

ItemSchema
type: String,
qty: Number


Сейчас делаю так

Попытка вставки
update(
{ userId, 'storage.type': { $ne: type } },
{ $push: { storage: { type, qty } } },
{ new: true }
)

При ошибке
update(
{ userId, 'storage.type': type },
{ $inc: { 'storage.$.qty': qty } },
{ new: true }
)


На атласе все. Смотрю в сторону $merge с 4.2 версии, может на воркер посадить все, что пушится.

3 ответов

11 просмотров

а это не подходит? https://docs.mongodb.com/manual/reference/method/db.collection.findAndModify/ там вроде атомарная операция

https://docs.mongodb.com/manual/reference/operator/update/setOnInsert/

Josh-Dies 🪄 /\p{Rich}+/ Автор вопроса

вот тут схемы

Похожие вопросы

Обсуждают сегодня

Подскажите, а есть vault lite или ченить такое?) А то нужен вольт для похода в вольт, но весит он ~500 мб) как-то многовато для парочки запросов ))
Alexandr Orloff
17
Всем привет, есть небольшая проблема Есть такой скрипт document.addEventListener('DOMContentLoaded', function () { const sliderTabs = document.querySelectorAll('.s...
A da
8
@go1337 @dblackCat Привет. Все ещё дрочусь с fastpanel. Добавил второй домен который должен смотреть в рут того же сайта, но так как это просто домен, а не сайт, я не могу ему...
Ross 🦴
9
До речі, в ево нема можливості чи якого розширення щоб з адмінки з телефона зайти і терміново щось в верстці поправити?
Женя
7
кто-нибудь пользуется тайм-трекерами во время работы? так много разных нагуглил, может есть что-то популярное
Lencore
8
Пацаны. Я разрабатываю софт для инвайтинга на телетон, и столкнулся с такой проблемой, в один из чатов не могу приглашать никого, не дает добавлять, в то же время через официа...
Kernel Panic
11
Скажите, а кому нужен Currency как отдельный плагин вместо полноценного ecommerce в OctoberCMS? Кто-то использует его уже или планирует в будущем? Может я что-то не понимаю?
Igor
13
Розмовами про Рево мені нагадали часи, коли шаблони правилися прямо в адмінці. Хто в курсі, чому відійшли від цієї практики, так блейд не працює? Доволі зручно ж було (інколи)
Женя
3
Всем добрый вечер, Рад оказаться в кругу единомышленников. Начинаю погружаться в мир .net веба. Зовут Ерасыл 🖖 У меня назрел вопрос: Какой процент проектов, прошедшие через в...
Ерасыл
6
Чому? Да тому що без GiT не уявляю нормального проекта а коли код в базі то то так собі
Dmytro Lukianenko
3
Карта сайта