firebase - Flutter/Firebase 实时数据库:如何使用 equalsTo?
问题描述
我的数据库结构如下所示:
final databaseReference = FirebaseDatabase.instance.reference();
databaseReference
.child('orders')
.equalTo(myUID, key: 'uid')
.orderByChild(orderField)
.limitToFirst(pageSize)
.once()
.then((snapshot) {
// form current list
List<dynamic> curretList = [];
snapshot.value.forEach((orderId, orderData) {
curretList.add(orderData);
});
但以下查询返回空结果。
我怀疑错误在.equalTo(Provider.of<AppData>(context, listen: false).uid, key: 'uid')
. 我在这里使用equalTo
正确吗?
解决方案
您尝试使用的第二个参数与equalTo
您在这里需要的完全不同。
您正在寻找的是:
final databaseReference = FirebaseDatabase.instance.reference();
databaseReference
.child('orders')
.orderByChild('uid')
.equalTo(myUID)
.limitToFirst(pageSize)
所以这需要 的所有子节点orders
,根据它们的属性值对它们进行排序uid
,然后返回值等于的第一个pageSize
节点。uid
myUID
由于每个查询只能orderBy...
调用一次,这意味着您必须在应用程序代码中按时间戳对结果重新排序。另请参阅基于 Firebase 中多个 where 子句的查询
推荐阅读
- typescript - 在 Typescript 中附加字符串
- maxima - Maxima 中的 Solve() 和 Assume()
- docker - 运行 pip install -e git 时 Docker 构建失败
- burp - 打嗝扩展器----如何编写入侵者的扩展器?
- c - 表达式必须有浮点指针的算术类型错误
- javascript - 列出仅显示 ID 的问题
- javascript - 为什么 Babel 不处理我的 React Native 项目?
- android - React Native - 为什么我们在 CameraRoll.getPhotos() 中使用 after 属性?
- c# - 等待一分钟,然后在 c# 中调用下一个 api
- image-processing - 将 Kinect 深度图转换为 RGB 地面实况深度图