Firebase:startAt() 不过滤使用键存储的数据,自纪元以来的小时数
Firebase: startAt() is not filtering data stored with keys as hours since epoch
我的数据是用键存储的,自纪元以来的小时数。我只想获取数据的一部分 - 例如,我想指定我希望所有数据都从 453615
.
开始
到目前为止我得到了这个代码:
this.dbService.databaseRef.child('dev_trends/' + this.deviceUid)
.orderByKey()
.startAt('453615')
.get().then(dataTrends => {
const data = dataTrends.val();
console.log(data);
});
使用上面的代码,我在我的控制台中得到了这个结果:
我的数据模型如下所示:
我应该在我的代码中更改什么以便从 Firebase 过滤数据?
我使用以下代码在服务中创建了 databaseRef 变量:
constructor(private db: AngularFireDatabase) {
//Set what happens when we read all devices
this.databaseRef = db.database.ref(); //Create databaseReference
}
Json 我的数据:
{"dev_trends" : {
"-MkMxxZXXzmKclgeGPde" : {
"H" : {
"453614" : "50;45",
"453615" : "50;50",
"453617" : "50;55",
"453630" : "51;60"
},
"T" : {
"453614" : "24;18",
"453615" : "23;17",
"453617" : "23;15",
"453630" : "22;10"
}
}
}}
找出问题所在:
startAt()
方法使用键 H
和 T
过滤数据,并且
不是这些键中的数据列表。
- 解决方案是重构数据模型。
新数据模型:
附加信息:
- 我并不是说我的解决方案是理想的 - 但对于我的具体问题
会成功的。
- 我仍然需要做一些额外的工作 - 所以如果其他人对此有更好的解决方案,请 post 你的答案也一样:)
我的数据是用键存储的,自纪元以来的小时数。我只想获取数据的一部分 - 例如,我想指定我希望所有数据都从 453615
.
到目前为止我得到了这个代码:
this.dbService.databaseRef.child('dev_trends/' + this.deviceUid)
.orderByKey()
.startAt('453615')
.get().then(dataTrends => {
const data = dataTrends.val();
console.log(data);
});
使用上面的代码,我在我的控制台中得到了这个结果:
我的数据模型如下所示:
我应该在我的代码中更改什么以便从 Firebase 过滤数据?
我使用以下代码在服务中创建了 databaseRef 变量:
constructor(private db: AngularFireDatabase) {
//Set what happens when we read all devices
this.databaseRef = db.database.ref(); //Create databaseReference
}
Json 我的数据:
{"dev_trends" : {
"-MkMxxZXXzmKclgeGPde" : {
"H" : {
"453614" : "50;45",
"453615" : "50;50",
"453617" : "50;55",
"453630" : "51;60"
},
"T" : {
"453614" : "24;18",
"453615" : "23;17",
"453617" : "23;15",
"453630" : "22;10"
}
}
}}
找出问题所在:
startAt()
方法使用键H
和T
过滤数据,并且 不是这些键中的数据列表。- 解决方案是重构数据模型。
新数据模型:
附加信息:
- 我并不是说我的解决方案是理想的 - 但对于我的具体问题 会成功的。
- 我仍然需要做一些额外的工作 - 所以如果其他人对此有更好的解决方案,请 post 你的答案也一样:)