Firebase - не может вложить коллекцию коллекций - PullRequest
1 голос
/ 04 апреля 2019

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

В основном в коллекции supervisorRequests должен быть документ для каждого supervisor, названный в честь ключа руководителя.Под документом руководителя я хочу иметь коллекцию случайно сгенерированных идентификаторов, каждый из которых содержит метаданные запроса.Вот моя желаемая структура:

-supervisorRequests
      -supervisor-1-Key
           -random-id-of-request
              - user: userID
              - userEmail: userEmail
              - requestDate: timestamp
           -random-id-of-request
              - user: userID
              - userEmail: userEmail
              - requestDate: timestamp
      -supervisor-2-Key
           -random-id-of-request
              - user: userID
              - userEmail: userEmail
              - requestDate: timestamp
           -random-id-of-request
              - user: userID
              - userEmail: userEmail
              - requestDate: timestamp
           -random-id-of-request
              - user: userID
              - userEmail: userEmail
              - requestDate: timestamp

Мой код пытается это сделать:

const docReference = firebase.firestore().collection(`supervisorRequests`).doc(this.props.supervisorKey);
docReference.set({ user: this.props.userUID, requestDate: new Date().getTime(), userEmail: this.props.email });

Мой код, однако, генерирует следующую структуру:

-supervisorRequests
      -supervisor-1-Key
          - user: userID
          - userEmail: userEmail
          - requestDate: timestamp

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

Что будет не так с моим кодом и как мне получить первую структуру базы данных, которую я представил?

Ответы [ 2 ]

1 голос
/ 04 апреля 2019

Строка, передаваемая в collection (), должна быть путем к коллекции. То, что вы передаете сейчас, это путь к документу Это можно увидеть, увидев косую черту в строке. Возможно, вы хотите ссылаться на документ следующим образом:

firebase.firestore()
        .collection('supervisorRequests')
        .doc(this.props.supervisorKey)

Вы можете использовать возвращенную DocumentReference для создания документа с помощью метода set ().

0 голосов
/ 04 апреля 2019

Просто чтобы завершить ответ Дуга, обратите внимание, что вы можете напрямую передать «разделенный косой чертой» метод doc(), чтобы получить «DocumentReference» экземпляр, который ссылается на документ по указанному пути ".

Так что вы также можете сделать:

firebase.firestore().doc(`supervisorRequests/${this.props.supervisorKey}`).set();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...