【问题标题】:Storing firestore objects in an array then sorting based on a numerical key将 firestore 对象存储在数组中,然后根据数字键进行排序
【发布时间】:2019-12-30 04:44:55
【问题描述】:

上下文

  • 我刚刚查询了特定用户有资格获得的所有优惠,并且 已将这些对象存储在数组中。
  • 我现在正在寻找对它们进行排序 按优先级 (pri) 以便我可以将前三个放在用户的 仪表板
  • 没有进行排序,我正在努力找出原因。

代码

    var offers = new Object;

    var offers = snap.data().offers;

    var offerpriority = new Array;

    offers.forEach(offer => {

        db.collection("offers").doc(offer).get().then(snap => {

            var thisoffer = {title: snap.data().title, pri: snap.data().priority};
            offerpriority.push(thisoffer);

        });

    });

    function compare(a, b){
        return b.pri-a.pri;
    };


    console.log(offerpriority.sort(compare));

【问题讨论】:

    标签: javascript arrays sorting google-cloud-firestore


    【解决方案1】:

    您应该使用 orderBy() 方法来对 Firestore 中的项目进行排序。

    你应该使用类似的东西:

    db.collection("offers").orderBy("pri");
    

    此外,如果你想限制结果,比如显示其中的 3 个,你可以使用 limit() 方法:

    db.collection("offers").orderBy("pri").limit(3);
    

    Here您可以找到有关此讨论的更详细文档。

    【讨论】:

    • 只有少数几个我想获得的报价,即出现在我的用户报价数组中的报价。你会考虑在哪里添加它?
    • 可能为此您应该遍历数组并使用 where('offers', '=', arrayElement) 方法对每个数组元素进行比较查询。这个解决方案效率不高,但我暂时想不出别的办法。
    猜你喜欢
    • 2018-12-27
    • 2019-06-22
    • 1970-01-01
    • 2017-09-29
    • 2011-04-05
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    相关资源
    最近更新 更多