我对Firebase相对较新,我正在尝试为我创建一个迷你包装器来查询我的数据库。
我的问题是,我不知道如何添加条件查询sch作为orderByChild ...
/* Available Arguments:
* - key: Order using a child key
* - firstAmt: Only get the first x elements
* - lastAmt: Only get the last x elements
* - startAt: Get elements starting from index x
* - endAt: Get elements ending at index x
*/
// Not providing anything will give the first 15 elements
function getProjects(arg, callback, errorCB) {
if (!arg) arg = {};
if (!arg.firstAmt) arg.firstAmt = 15;
var obj = firebase.database().ref('projects');
if (arg.key) {
obj.orderByChild(arg.key);
}
if (arg.firstAmt) {
obj.limitToFirst(arg.firstAmt);
}
if (arg.lastAmt) {
obj.limitToLast(arg.lastAmt);
}
if (arg.startAt) {
obj.startAt(arg.startAt);
}
if (arg.endAt) {
obj.endAt(arg.endAt);
}
obj.once('value').then((snapshot) => { callback(snapshot.val())}).catch(errorCB);
}
当我使用{firstAmt:1}调用getProjects时,我获得了数据库中的每个项目,而不是第一个项目。
我不知道这是否是正确的方法,但我觉得测试每个用例(arg.key&& arg.firstAmt ......)可能会过度使用它。
谢谢!
答案 0 :(得分:0)
limitToFirst
limitToLast
startAt
endAt
equalTo
仅适用于orderByKey
orderByChild
或orderByValue
因此,我建议您将代码更改为:
if (arg.key) {
obj.orderByChild(arg.key);
} else {
obj.orderByKey();
}
这应该会给你快照,直到前15个元素。