【问题标题】:how to sort by alphabetical order in firestore如何在firestore中按字母顺序排序
【发布时间】:2022-01-07 10:29:09
【问题描述】:

可以按字母顺序对数据库列表进行排序吗?我尝试了 sortby() 函数,但它不能正常工作

var snapshot = await firebase.firestore().collection('Locations').where(
            "category", "==", type).orderBy('name','desc').get();

例如在数据库中: 1- name:chicken 2- name:pig 3- name:duck

按名称排序后,顺序应该是鸡、鸭、猪

这是数据库的外观,以及我运行代码后的结果。

如您所见,结果不是按字母排序

这是我在 firebase 中的索引看起来像

【问题讨论】:

  • 你可以试试snapshot.docs.forEach(d => console.log(d.data()))而不是整个数组吗?
  • @Dharmaraj 嗨,对不起,我有点困惑。我要把这行代码放在我的代码下面吗?如果我把它放在下面,结果和我上面发布的一样

标签: node.js reactjs firebase react-native


【解决方案1】:

查询和结果正确 ....这里的字母顺序将根据编码顺序(例如ASCII,Unicode),其中大写字母小于小写字母(数字首先出现(最小)然后是大写字母,然后是小字母:[0-9][AZ][az])

图片中的文档有(从下到上):

    Little - Maymar - Panda - Seafood - chicken - jade  

取每个字母的第一个字母并记住 ASCII 顺序,然后是正确的:L->M->P->S->c->j
而且由于您使用了“desc”,它们会以另一种方式出现

解决问题的一种方法是让它们都以大写字母开头(或者让它们都以小写字母开头)

【讨论】:

  • 嗨 Remoo,我尝试将 desc 更改为 asce,但仍然无法正常工作。
  • 我刚刚用 firesbase 中的索引图片更新了我的问题
  • 您希望他们按什么顺序来?使用图片中的“小 - 梅玛 - 熊猫 - 海鲜 - 鸡肉 - 玉石”中的哪个顺序?
【解决方案2】:

您可以使用 javascript 对 firestore 响应的结果进行排序,而不是使用 firestore 的 sortBy():

snapshot.docs.sort(function(a, b){
    return a.data().name.localCompare(b.data().name);
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    相关资源
    最近更新 更多