繁体   English   中英

查询 flutter 中的 Firestore map 字段

[英]Querying Firestore map fields in flutter

我正在尝试从名为"bookmarks"的字段中检索 Firestore 数据库中的帖子。 "bookmarks"字段的类型为 map。 当用户为帖子添加书签时,该字段会更新,并将deviceId设置为true ,如下所示:

▼ bookmarks
     deviceId : true

当帖子未添加书签时, deviceId: true被删除,并且bookmarks字段保持为空,如下所示:

bookmarks: {}

我正在尝试从deviceID设置为true"bookmarks"中检索帖子。 但是,我的查询返回所有帖子,包括bookmarks为空的帖子。

这是我的查询:

QuerySnapshot snapshot = await postsRef
        .document(postId)
        .collection('users_posts')
        .where('bookmarks', arrayContains: deviceId)
        .orderBy('timestamp', descending: true)
        .getDocuments();

请帮助弄清楚我做错了什么。 附件是我的数据库的结构。 谢谢你。

在此处输入图像描述

在此处输入图像描述

您的bookmarks字段不是数组,因此您不能像数组一样查询它。 它是 map,您可以使用点表示法查询 map 的嵌套字段的值:

.where('bookmarks.${deviceId}', isEqualTo: true)

我尝试了该表示法,但对我不起作用,这是我使用的表示法: where("bookmarks.deviceId:true"), 您可以将 true 替换为您正在查找的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM