Как получить автоматически сгенерированный идентификатор документа Firestore? - PullRequest
0 голосов
/ 28 апреля 2020

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

await admin.firestore().collection("mycollection").doc().set(mydata)  
    .then(doc => {

        console.log(doc.id);

        return true;
     })
     .catch(err => {
         return false;
     });

Полученный идентификатор в журнале не совпадает с идентификатором в базе данных Firestore. Я не понимаю почему.

1 Ответ

2 голосов
/ 28 апреля 2020

Полученный идентификатор в журнале не совпадает с идентификатором в базе данных Firestore.

Это нормально, так как метод set() возвращает Promise<void> (т.е. Обещание, которое разрешается до undefined). Поэтому вы не можете сделать doc.id в функции обратного вызова, переданной методу then(), поскольку doc - это undefined.

Вы должны сделать следующее:

try {
  const docRef = admin.firestore().collection("mycollection").doc();
  const docId = docRef.id;  //Here you have the value of the id (independently of the fact you call set() later or not)

  await docRef.set(mydata);
} catch(err) {
  //...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...