Firebase Неверная ссылка на документ.Ссылки на документы должны иметь четное количество сегментов - PullRequest
0 голосов
/ 02 июня 2018

Что не так с этим запросом?

const db = firebase.firestore()
const query = db.doc(this.props.user.uid).collection('statements').orderBy('uploadedOn', 'desc').limit(50)

Я получаю следующую ошибку:

Uncaught Error: Invalid document reference. Document references must have an even number of segments, but FrMd6Wqch8XJm32HihF14tl6Wui2 has 1
    at new FirestoreError (index.cjs.js:346)
    at Function.DocumentReference.forPath (index.cjs.js:15563)
    at Firestore.doc (index.cjs.js:15368)
    at UploadStatementPresentation.componentWillMount (UploadStatementPage.jsx:61)
    at UploadStatementPresentation.componentWillMount (createPrototypeProxy.js:44)
    at callComponentWillMount (react-dom.development.js:6872)
    at mountClassInstance (react-dom.development.js:6968)
    at updateClassComponent (react-dom.development.js:8337)
    at beginWork (react-dom.development.js:8982)
    at performUnitOfWork (react-dom.development.js:11814)

Ответы [ 2 ]

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

Поскольку вы не описали, что именно вы пытаетесь запросить, я просто укажу, что все документы должны быть в коллекции без исключения.Итак, если вы скажете следующее:

db.doc(this.props.user.uid)

Firestore предполагает, что строка, которую вы передаете doc(), содержит и коллекцию, и идентификатор документа, разделенные косой чертой.Но это кажется маловероятным в вашем случае.Вам необходимо определить, в какой коллекции находится uid, и сначала использовать ее при создании ссылки на коллекцию, которую вы хотите запросить.Предполагая, что у вас есть подколлекция statements в документе uid, и что какая-то другая коллекция содержит документ uid, вам нужно будет указать полный путь, например:

db.collection('that-other-collection').doc(this.props.user.uid).collection('statements')

Конечно, толькоВы знаете реальную структуру ваших данных.

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

Если вы хотите получить коллекцию документов с запросом, вам не нужно указывать идентификатор документа.В этом случае должен работать приведенный ниже код.

const query = db.collection('statements').orderBy('uploadedOn', 'desc').limit(50)

Или, если вы хотите получить документ, вы можете передать идентификатор документа в метод doc () .В этом случае код должен быть.

const query = db.collection('statements').doc(this.props.user.uid)

Для получения более подробной информации о запросе данных огненного шторма: https://firebase.google.com/docs/firestore/query-data/get-data?authuser=0

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