我的问题是,当每个文档都有一个名为"Index"
(从1到10)的字段时,如何对集合中的文档进行排序。我认为orderBy("Index", descending: false)
应该对文档进行排序集合从1到10升序排列。这是我的代码,当我调用orderBy()时,Cloud Firestore中文档的显示顺序不正确,并且根本不以任何顺序显示文档,无论是降序还是升序...谢谢您的帮助我真的很感激!
if (petAge >= 42 && petAge <= 56) {
await petRecordPath.add({
'Completed': false,
'Start Due Date': startDateMultiBooster,
'End Due Date': endDateMultiBooster,
'Display Range': displayMessageMultiBooster,
'Importance': 'Vital',
'Vaccination': 'Puppy Multi Vaccine (DHPP)',
'Index': 1,
}).then((value) async {
await petRecordPath.add({
'Completed': false,
'Start Due Date': startDateMultiBooster,
'End Due Date': endDateMultiBooster,
'Display Range': displayMessageMultiBooster,
'Importance': 'Recommended',
'Vaccination': 'Leptospirosis Vaccine',
'Index': 2,
}).then((value) async {
await petRecordPath.add({
'Completed': false,
'Start Due Date': startDateMultiBooster,
'End Due Date': endDateMultiBooster,
'Display Range': displayMessageMultiBooster,
'Importance': 'Recommended',
'Vaccination': 'Deworm 1',
'Index': 3,
});
});
}).whenComplete(() {
petRecordPath.orderBy('Index', descending: false);
});
}
这是在Firebase控制台中的外观:
第一个文档:
第二个文档:
第三文档:
最后,使用控制台本身的内置排序功能:
答案 0 :(得分:2)
Firestore控制台不会自动排序文档,也不会受到代码进行的orderBy()
调用的任何影响。实际上,这意味着任何用户都可以进行API调用,从而改变控制台显示数据的方式,这听起来是个坏主意。
仅当您在控制台中指定排序顺序时(如上一个屏幕截图中所示),它才会按该顺序显示文档。
这类似于API的工作方式:除非您在阅读文档时指定排序顺序,否则将以不确定的顺序检索它们。并且您的petRecordPath.orderBy('Index', descending: false)
将确保您的代码按指定顺序读取文档。