【发布时间】:2020-09-04 20:25:07
【问题描述】:
好的,所以我一直在网上搜索,但找不到我的问题的解决方案。我使用了以下查询,但仍然没有运气:
.whereField("Features.tagName", arrayContains: tagName)
.whereField("Features", arrayContains: "tagName: \(tagName)")
.whereField("Features", arrayContains: "tagName: \(tagName)")
.whereField("Features", arrayContainsAny: [tagName])
.whereField("Features", in: [tagName])
.whereField("Features.tagName", arrayContainsAny: [tagName])
我想我会添加这些以显示我是否走在正确的轨道上,并希望避免任何混淆或推荐任何这些查询作为解决方案的事件。
我指向了正确的集合,因为我声明了一个全局常量,我可以调用它并用于其他查询/方法。
我的数据库结构如下:
Post -
PostID -
username
date
features[]
但是,必须注意我的 features 数组的结构是这样的:
features: [
[0] tagName: "Blue",
[1] tagName: "Yellow"
]
我似乎无法返回任何东西。我只查询一个标签。我有一种强烈的感觉,这是因为tagName。但是我已经使用了插值或尝试过,但仍然没有运气。
有人知道我哪里出错了吗?
【问题讨论】:
-
features数组是否包含除tagNames之外的任何其他内容? -
@Emmanuel 我知道问题出在哪里。我使用 CodingKeys/identifiable 允许用户选择标签。我有一个名为
tagName的键,如果我在上传之前从数组中删除这个前缀,我可以查询索引。然而,这本身就是一个挑战。但是,要回答您的问题,features将仅包含tagName。 -
您对这段代码
.whereField("Features.tagName"有何期待?更具体地说,Features是什么?你的数组是features?而且这个 [0] tagName: "Blue", 看起来真的不像一个普通的 firestore 数组——它看起来像一个地图数组? -
另外,我相信您不能对数组中的对象字段运行查询,但如上所述并不清楚该结构是由什么组成的。你能澄清一下吗?
标签: swift firebase google-cloud-firestore