我正在使用这个包https://github.com/csfrequency/react-firebase-hooks,下面的代码可以工作。
const [posts, loading, error] = useCollection(
firebase
.firestore()
.collection('posts')
.where('uid', '==', uid),
{
snapshotListenOptions: { includeMetadataChanges: true },
}
)
然而,当我添加的顺序,我得到了一个错误:Error: {"code":"failed-precondition","name":"FirebaseError"}
const [posts, loading, error] = useCollection(
firebase
.firestore()
.collection('posts')
.where('uid', '==', uid)
.orderBy('createdAt', 'desc'),
{
snapshotListenOptions: { includeMetadataChanges: true },
}
)
我想知道在使用React-Firebase-Hooks时应该如何构造查询。如有任何帮助,我将不胜感激。
我认为你需要添加复合索引:
collection post: uid Ascending createdAt Descending
不知道你是如何得到这个错误的,但也许你能从中得到更多的细节。我直接在node中复制了它。如果你直接在节点上运行这样的查询,你会得到错误信息,更多的细节,如:
Error: 9 FAILED_PRECONDITION: The query requires an index. You can create it here: https://console.firebase.google.com/v1/r/project/<project-id>/firestore/indexes?create_composite=Ck1wcm9qZWN0cy9zdXJ5amFrLXRlc3QtMDAvZGF0YWJhc2VzLyhkZWZhdWx0KS9jb2xsZWN0aW9uR3JvdXBzL3Bvc3RzL2luZGV4ZXMvXxABGgcKA3VpZBABGggKBHNvcnQQAhoMCghfX25hbWVfXxAC
如果你点击错误中的链接,索引将自动建立。复合索引的文档在这里