Почему snap.data (). Id не определен? - PullRequest
0 голосов
/ 01 июня 2019

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

Я просмотрел множество примеров в Интернете, и все они, кажется, делают именно то, что я 'я делаю.

exports.moveToProfile = functions.firestore
  .document("tempProfiles/{id}")
  .onCreate(async (snap, context) => {
    const id = snap.data().id;
    const displayName = snap.data().displayName;

    const profile = await db
      .collection("profiles")
      .doc(id)
      .set({
        displayName: displayName,
        points: 0
      });

    return profile;
  });

Ответы [ 2 ]

1 голос
/ 01 июня 2019

В вашем коде data - это объект типа DocumentSnapshot . Как видно из связанной документации по API, идентификатором документа, представленного этим объектом, является его свойство id . data () предоставляет вам все свои поля (и формальный идентификатор элемента не является одним из них, если вы не записали его как поле.) Таким образом, вы можете получить идентификатор с помощью data.id.

0 голосов
/ 02 июня 2019

Если вы хотите использовать подстановочные знаки и параметры, тогда вы можете использовать context.params.

См. https://firebase.google.com/docs/functions/firestore-events#wildcards-parameters.

    // Listen for changes in all documents in the 'users' collection
    exports.useWildcard = functions.firestore
        .document('users/{userId}')
        .onWrite((change, context) => {
            // If we set `/users/marie` to {name: "Marie"} then
            // context.params.userId == "marie"
            // ... and ...
            // change.after.denter code hereata() == {name: "Marie"}
        });

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