【发布时间】:2019-07-19 00:46:15
【问题描述】:
我正在尝试查询我的 firestore 数据库以查找集合中包含数组字段中的某个对象的所有文档。所以说我的数据库有一个这样的文章集合:
articles:
[
{
id: "1",
title: "First Article",
comments:[]
relatedArticles:[
{
id: "2",
title:"Second Article"
},
{
id: "3",
title:"Third Article"
},
]
},
{
id: "2",
title: "Second Article",
comments:[]
relatedArticles:[
{
id: "1",
title:"First Article"
}
]
}
{
id: "3",
title: "Third Article",
comments:[]
relatedArticles:[
{
id: "1",
title:"First Article"
}
]
}
]
articles 集合中的每篇文章都有一个数组字段 (relatedArticles),其中包含一组对象,每个对象都包含相关文章的 id 和标题。假设我想在数据库中查询相关文章字段中包含文章 1 的所有文章。假设无法修改此结构,我将如何处理。我尝试了以下方法无济于事:
firestore().collection("articles")
.where("relatedArticles", "array-contains", {title: "First Article", id: "1"})
这可行吗?如果不是,那是什么?
【问题讨论】:
-
您尝试过您提出的查询吗?因为,如果我没记错的话,这正是你应该这样做的方式!见stackoverflow.com/questions/54081799/…
-
我有,它不会返回任何东西。
-
您确定
articles是 Firestore 集合而不是数组吗? -
@RenaudTarnec 是的,文章绝对是一个数据库集合。建议的方法是否有任何警告?例如,在查询或数据库记录中,属性的顺序是否重要(标题前的 id 与 id 前的标题)?
-
“属性的顺序是否重要” -> 我不知道,我从未尝试过。如果您反转对象元素/属性,它是否有效?
标签: typescript firebase google-cloud-firestore