Quel est le problème avec cette requête?
const db = firebase.firestore()
const query = db.doc(this.props.user.uid).collection('statements').orderBy('uploadedOn', 'desc').limit(50)
J'obtiens l'erreur suivante:
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)
Comme vous n'avez pas décrit exactement ce que vous essayez d'interroger, je soulignerai simplement que tous les documents doivent être dans une collection, sans exception. Donc, si vous dites ceci:
db.doc(this.props.user.uid)
Firestore suppose que la chaîne que vous passez à doc()
contient à la fois la collection et l'ID du document séparés par une barre oblique. Mais cela semble hautement improbable dans votre cas. Vous devez déterminer dans quelle collection se trouve l'uid et l'utiliser en premier lorsque vous créez la référence à la collection que vous souhaitez interroger. En supposant que vous ayez une sous-collection statements
dans le document uid et qu'une autre collection contient le document uid, vous devrez spécifier le chemin complet comme ceci:
db.collection('that-other-collection').doc(this.props.user.uid).collection('statements')
Bien sûr, vous seul connaissez la structure réelle de vos données.
Si vous souhaitez obtenir une collection de documents avec interrogation, vous n'avez pas besoin de spécifier un identifiant de document. Le code ci-dessous devrait fonctionner dans ce cas.
const query = db.collection('statements').orderBy('uploadedOn', 'desc').limit(50)
Ou si vous souhaitez obtenir le document, vous pouvez transmettre l'ID du document à la méthode doc () . Dans ce cas, le code devrait être.
const query = db.collection('statements').doc(this.props.user.uid)
Pour plus de détails sur l'interrogation des données de tempête de feu: https://firebase.google.com/docs/firestore/query-data/get-data?authuser=