Есть ли способ установить для коллекции целочисленные идентификаторы во всех ее документах? Я ищу что-то вроде идентификатора автоинкремента таблиц SQL. Если нет, то какой из этих вариантов имеет лучшую производительность?

for (let i = 0; i < 1000; i++) {
    // option 1
    firestore.collection("documents").doc(`${i}`).set(documents[i])
    // option 2
    firestore.collection("documents").add({ intId: i })
}
0
Sinner of the System 25 Окт 2020 в 19:32

1 ответ

Лучший ответ

Firestore не предоставляет никаких идентификаторов автоинкремента. Они не масштабируются так, как того требует Firestore.

Оба варианта, которые вы показываете, имеют одинаковые рабочие характеристики. Ограничивающий фактор здесь описан в документации о поведении точек доступа в документе. пишет:

Избегайте высоких скоростей чтения или записи в лексикографически близких документах, иначе в вашем приложении возникнут конфликтные ошибки.

Это именно то, что делает ваш код. Предлагается использовать случайные идентификаторы, а не последовательные идентификаторы, поскольку последовательные идентификаторы плохо масштабируются для Firestore.

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

1
Doug Stevenson 25 Окт 2020 в 16:35