Как получить идентификатор документа из базы Firebase - PullRequest
0 голосов
/ 07 апреля 2020

Я новичок в Angular, и у меня проблема. Я не знаю, как получить идентификатор документа, который я только что создал, и использовать его рядом с ним. Я видел, что есть две опции db.collection('info').doc().set() и db.collection('info').add().

. Сейчас я попробовал этот код:

var DocID:string;
db.collection().add({
   description: info
  }).then(function(docRef){
   DocID = docRef.id;
  }).catch(function(error){
   console.log("Error creating the document:", error);
});
IdInfo.push(DocID);

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

Спасибо за помощь !!

Blockquote

Ответы [ 2 ]

0 голосов
/ 08 апреля 2020

add() возвращает Promise, поэтому вы можете использовать then(), который будет содержать обратный вызов, который будет вызываться при выполнении Promise. Поскольку Promise используется в асинхронных операциях, то здесь IdInfo.push(DocID); вы получите неопределенным, так как данные все еще не получены полностью. Вам нужно добавить приведенный выше код внутри then(), чтобы иметь возможность добавить docID внутри массива:

db.collection().add({
   description: info
  }).then(function(docRef){
   DocID = docRef.id;
   IdInfo.push(DocID);
  }).catch(function(error){
   console.log("Error creating the document:", error);
});
0 голосов
/ 08 апреля 2020

Оба варианта функционально эквивалентны. Выберите тот, который вы предпочитаете.

Если вы используете add(), он вернет DocumentReference с сгенерированным идентификатором документа. Если вы используете doc() (перед вызовом set()), он также вернет DocumentReference (перед написанием документа с set()). Обязательно прочитайте документацию по API для каждого метода, чтобы понять, что они делают.

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