javascript - javascript中firestore中的orderBy()
问题描述
我有一个火库结构,例如-
Palettes(collection) --><auto-gen-id1>, <auto-gen-id2> ... --> { colors: [...], createdAt: TIMESTAMP } (each document)
我想使用 onSnapshot() 监听器根据时间戳获取所有数据和顺序,并使用反应钩子将其存储到状态中。如何在下面的代码中使用 orderBy 查询
db.collection('palettes').onSnapshot(snapshot => {
snapshot.docChanges().forEach(change => {
if (change.type === "added") {
setPalette( prevPalette => ([
{ id: change.doc.id, ...change.doc.data() },
...prevPalette
]))
}
})
})
解决方案
看看文档。
你可以做:
db.collection('palettes').orderBy("createdAt", "desc").onSnapshot(snapshot => {
snapshot.docChanges().forEach(change => {
if (change.type === "added") {
setPalette( prevPalette => ([
{ id: change.doc.id, ...change.doc.data() },
...prevPalette
]))
}
})
})
或者
db.collection('palettes').orderBy("createdAt").onSnapshot(snapshot => {
snapshot.docChanges().forEach(change => {
if (change.type === "added") {
setPalette( prevPalette => ([
{ id: change.doc.id, ...change.doc.data() },
...prevPalette
]))
}
})
})
取决于排序方向。
推荐阅读
- arrays - 计算一段时间内满足多个条件的不同客户 ID
- django - ajax django登录系统不工作,它返回用户为无
- python - 使用 for 循环添加两个数组
- python - python threading Event : why do we need clear()
- javascript - 如何限制幻灯片的大小(JS)
- google-apps-script - How to create address fields in Google Contacts using Google App Script
- python - How do I manipulate text submitted in a Django form?
- mysql - Repeatable read regarding select * with order by and limit
- ssas - Changing color in a measure in SSAS
- php - 您的包名无效 - Composer 2.0