У меня игрушка, в которой много пользователей, хз как лучше сделать 😅
100% не так))) лучше распиши исходную задачу, а не то что у тебя в вопросе, явно не туда свернул где-то)
У меня онлайн игрушка, есть 100к пользователей, у них меняется шмот и прочие показатели во время игры Я держу все в памяти, а раз в час выкидываю в бд
ок. зря ты правда в памяти держишь) что будет когда их больше станет? в какой-то момент просто памяти не хватит и ляжет серв) но даже если так и отталкиваться от твоего решения, то тебе достаточно сделать чуть по другому. нужно разделить процесс заполнения _id у значения поля (то что ты сделал) от записи в базу. при этом полученные значения можешь в новый массив запихать. и 2м этапом уже в User модель вызвать upsert([твой массив из предыдущего шага]) именно upsert) чтобы он либо обновил, либо вставил новый)
Я бы посоветовал: слушать событие error, отлавливать непойманные промис реджекты, обернуть код в try..catch, поймав ошибку смотреть в свойство stack объекта ошибки
кстати да, и этот момент забыл прописать в ответе)
Не могу найти в доках метод upsert =/
Жёстко... А если сервер падает то весь прогресс за час теряется?
Как уже сказали конечно лучше изменить подход. Но это наверное не на 5 минут. Для начала можешь хотя бы добавить свойство updated и туда писать время последнего изменения объекта. И например раз в 5 минут пробегаться по всем объектам и брать только те, у которых апдейт меньше 5 минут назад был и их сохранять.
хм, а это дельный совет под текущий костыль, спасибо!
Обсуждают сегодня