gpt4 book ai didi

firebase - 火存储 : query where clause > nested field

转载 作者:行者123 更新时间:2023-12-03 08:10:36 25 4
gpt4 key购买 nike

我正在使用 Flutter 和 Firestore。假设我的数据库如下所示:

[
{
Name: 'John',
Address: {
Street: "John doe street"
Postal: "12047"
}
},
{
Name: 'Mary',
Address: {
Street: "Fleet street"
Postal: "1242B"
}
}
]

我现在想要搜索邮政编码包含“12”的所有人员。因此这意味着该虚拟数据库中的两条记录。

但是如何过滤嵌套字段“Address.Postal”?

var ref = FirebaseFirestore.instance;
var query = '12';
ref.collection('users')
.where(
'Address.Postal', // Won't work
... // There is no 'like' operator or something that looks alike
);

仅供引用,Flutter 中的项目无关紧要。

最佳答案

where() 函数现在接受 FieldPath 实例作为第一个参数。这允许您引用嵌套字段或 documentId() 在您的查询中。

示例:

queryText = '12';

postalRef = new FieldPath('Address', 'Postal');
ref.collection('users')
// Equivalent of LIKE "queryText%"
.where(postalRef, '>=', queryText)
.where(postalRef, '<=', queryText+ '\uf8ff');

对于 SQL LIKE 语句的 Firestore 等效项,this answer explains it better 。但是,简短的解释是您可以使用 >=<=运营商查询您的string按字符值的字段。

\uf8ff (私有(private)使用区域 )只是此操作的常用分隔符,因为:

  • 这是一个非常高级的 unicode 字符
  • 这超出了您对基于网络的“文本搜索”的期望。

关于firebase - 火存储 : query where clause > nested field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70961448/

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