gpt4 book ai didi

javascript - 过滤 firebase 数据并排序结果

转载 作者:行者123 更新时间:2023-12-01 04:07:55 25 4
gpt4 key购买 nike

我正在编写一个使用 Firebase 作为数据库的 HTML/JavaScript 应用。

我的数据结构有点像这样:

steps/
- GUID
-- tripId
-- name
-- description
-- order
-- launchDate

我想从 tripId 与特定值(在变量中传递)匹配的步骤中选择任何项目。然后我想按降序排列结果顺序

我更习惯 T-SQL 类型语法,因此在实时数据库的世界中感到困惑。

这是我的代码现在的样子。

var steps = function readSteps(format, tripId) {
var stepsRef;
stepsRef = firebase.database().ref('steps/');
stepsRef.orderByChild('order').on('value', function (response) {
// DO SOME LOGIC HERE WITH 'response' DATA
});
}

我不知道如何过滤这些结果,也不知道如何轻松地进行降序排序。 order 是一个整数。

最佳答案

要获取订单 42 的所有步骤,您可以使用以下命令进行查询:

stepsRef = firebase.database().ref('steps/');
stepsRef.orderByChild('order').equalTo(42).on('value', function (snapshot) {
snapshot.forEach(function(stepSnapshot) {
console.log(stepSnapshot.key, stepSnapshot.val());
});
});

但是,如果您总是要查找订单的步骤,那么最好以不同的方式对 JSON 进行建模:

orderSteps
order42
step1: ...
step2: ...
step3: ...
order43
step1: ...
step2: ...

这允许您检索订单的步骤,而无需查询:

stepsRef = firebase.database().ref('orderSteps/order42');
stepsRef.on('value', function (snapshot) {
snapshot.forEach(function(stepSnapshot) {
console.log(stepSnapshot.key, stepSnapshot.val());
});
});

如果您想要在子属性上订购此结果,则它会变成:

stepsRef.orderByChild("field").on('value', function (snapshot) {

我建议阅读NoSQL data modeling并查看Firebase for SQL developers了解有关 NoSQL 数据库中的数据建模的更多信息。

关于javascript - 过滤 firebase 数据并排序结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41669378/

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