Облачные функции Firebase: доступен ли createId () на стороне сервера? - PullRequest
0 голосов
/ 29 марта 2020

Если я хочу выполнить запись в базу данных со стороны клиента, я могу внедрить экземпляр AngularFirestore и автоматически сгенерировать идентификатор, используя createId():

const individualId = this.angularFirestore.createId();

Но если я хочу сделать То же самое в облачной функции, используя API администратора Firestore, я не могу найти эквивалентную операцию. Я могу создать экземпляр Firestore в облачной функции, выполнив

const db = admin.firestore();

Однако у созданного объекта нет функции createId().

Есть ли эквивалент createId() что я могу использовать в облачной функции?

1 Ответ

1 голос
/ 29 марта 2020

Я понимаю из этой проблемы и этой статьи , что "AngularFirestore.createId() генерирует новый идентификатор из коллекции символов c с именем '_'".

Если вы хотите воспроизвести c это поведение в облачной функции, вы можете использовать *1001*doc() метод CollectionReference без указания пути. Вы получите DocumentReference, а затем вы можете использовать свойство id, чтобы получить «последний элемент пути к указанному документу».

Что-то вроде следующего:

const db = admin.firestore();
const docRef = db.collection('_').doc();
const newId = docRef.id;

Обратите внимание, что, как объяснено в упомянутой выше проблеме, немного странно «использовать коллекцию generi c вместо фактической коллекции» для генерации идентификатора, потому что вы бы обычно используйте коллекцию, в которой вы хотите создать новый документ. Но это не проблема, согласно этому комментарию от Джеймса Дэниелса (который является Firebaser), поскольку автоматически сгенерированный идентификатор Firestore представляет собой «просто случайную строку и не учитывает путь при все".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...