node.js - Firebase 无效的文档引用。文档引用必须有偶数个段

标签 node.js firebase google-cloud-firestore

这个查询有什么问题?

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)

最佳答案

由于您没有具体说明您要查询的内容,我只是指出所有文档都必须在一个集合中,无一异常(exception)。所以,如果你这样说:

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

Firestore 假定您传递给 doc() 的字符串包含集合和文档 ID,它们之间用斜线分隔。但这在您的情况下似乎极不可能。您需要确定 uid 在哪个集合中,并在构建对要查询的集合的引用时首先使用它。假设您在 uid 文档中确实有一个 statements 子集合,并且其他一些集合包含 uid 文档,您必须像这样指定完整路径:

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

当然,只有您自己知道数据的实际结构。

关于node.js - Firebase 无效的文档引用。文档引用必须有偶数个段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50653608/

相关文章:

javascript - 为什么 module.exports 可以保存一个 String 对象和一个模块实例,而不是一个 String 文字和一个模块实例?

node.js - Connect-mongo session 不会被自动删除

android - 如何从 Firestore 云数据库读取文档中的 ArrayLists?

android - 在 Jetpack Compose 不可组合函数中获取上下文

swift - 快速访问嵌套键值对

firebase - 为什么此快照两次将每个文档获取两次? flutter

node.js - Mongoose 中干净的版本控制/更改历史记录实现

node.js - 如何将 promise 链的结果导出到单独的模块?

javascript - 完整日历未显示来自 Reactjs 中的 Firebase Firestore 的事件

flutter - flutter 中 firestore 中的对象是否有转换器方法?