gpt4 book ai didi

javascript - Firebase 使用键节点排序/过滤

转载 作者:行者123 更新时间:2023-11-28 04:58:21 25 4
gpt4 key购买 nike

{
"places": {
"<push-key>": {
"name": "Company X"
},
"<push-key>": {
"name": "Restaurant Y"
}
}
"stamps": {
"<push-key>": {
"value": 0,
"date": 1487344650456
}
},
"placeStamps": {
"<place-push-key>": {
"<stamp-push-key-1>": true,
"<stamp-push-key-2>": true,
"<stamp-push-key-3>": true
}
}
}

我们是 Firebase 新手,想知道是否有办法按日期对图章(数据库中的节点)进行排序。我们的流程如下:

  • 我们使用地方节点检索我们想要的地点。
  • 使用地点的 key ,我们从 placeStamps/节点检索印章 key 。
  • 然后我们从邮票节点中逐一检索邮票。

有没有办法按“日期”或“值”等对这些对象进行排序/过滤?我们无法在客户端执行此操作,因为我们正在谈论数百万张邮票。

最佳答案

查询24小时前的邮票:

var ref = firebase.database.ref("stamps");
var now = Date.now();
var yesterday = now - 24 * 60 * 60 * 1000;
var query = ref.orderByChild("Date").startAt(yesterday);
query.on("child_added", function(snapshot) {
console.log(snapshot.key);
});

如果您想通过时间戳检索某个地点的邮票,您有两种选择:

  • 检索该地点的邮票并按时间戳客户端对它们进行排序。检索多个项目并不像您想象的那么慢,因为 Firebase 会通过管道传输请求。请参阅 Speed up fetching posts for my social network app by using query instead of observing a single event repeatedly
  • 将时间戳添加到每个地点的戳键中:

    placeStamps": {
    "<place-push-key>": {
    "<stamp-push-key-1>": 1487344650456,
    "<stamp-push-key-2>": 1487344650457,
    "<stamp-push-key-3>": 1487344650458
    }
    }

    现在您可以通过时间戳获取某个地点的印记:

    var ref = firebase.database.ref("placeStamps").child("<place-push-key>");
    var now = Date.now();
    var yesterday = now - 24 * 60 * 60 * 1000;
    var query = ref.orderByValue().startAt(yesterday);

关于javascript - Firebase 使用键节点排序/过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42352395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com