Как ограничить размер массива в Firestore при записи?

Кто-нибудь знает, как ограничить массив, чтобы новые элементы вставлялись, а старые отбрасывались при одной и той же записи?

Я предполагаю, что это невозможно, но это наверняка было бы удобно.

                    // * Store notification
                    // Users collection
                    const usersCollection = db.collection('users').doc(uid).collection('notifications').doc();

                    // Write this notification to the database as well
                    await usersCollection.update({
                        count: admin.firestore.FieldValue.increment,
                        notifications: admin.firestore.FieldValue.arrayUnion({
                            'symbol': symbol,
                            'companyname': companyname,
                            'change': priceDifference,
                            'changeDirection': directionOperatorHandler,
                            'updatedPrice': symbolLatestPrice,
                            'timestamp': currentTimestamp,
                        })
                    });

Написано на машинописном языке


В качестве альтернативы я думал запускать запланированную облачную функцию каждую неделю, чтобы просматривать и обрезать массивы на основе метки времени.

Причина, по которой я использую массив для хранения своих уведомлений, заключается в том, что я ожидаю много записей.


person tyirvine    schedule 11.07.2020    source источник
comment
если вы запускаете это с клиента, вы можете создать правило безопасности, которое ищет значение count, также вы можете создать облачную функцию, которая запускается при изменениях и сохраняет значение counts, если вы находитесь на стороне сервера, вы можете реализовать это самостоятельно с помощью оператора if для значения счетчика.   -  person andresmijares    schedule 11.07.2020
comment
Спасибо, Андре, я попробую то, что предложил Дуг, и если это не удовлетворит мои потребности, я, скорее всего, воспользуюсь запланированной облачной функцией ????   -  person tyirvine    schedule 12.07.2020


Ответы (1)


Для этого нет простой конфигурации. Ваш код должен реализовать ваши требования следующим образом:

  1. Чтение документа
  2. Изменение массива в памяти
  3. Проверка того, что размер находится в допустимых пределах
  4. Запись документа обратно
person Doug Stevenson    schedule 11.07.2020
comment
Хорошо, да, я думаю, ха-ха. За счет чтения это кажется хорошим решением. Еще раз спасибо Дуг! - person tyirvine; 12.07.2020