如何在 Angularfire 中实现多所有者文档?

How to implement a multiple-owners document in Angularfire?

我正在使用 Firebase 设计一个 Angular 应用程序,其中某个文档(商店)可以由多个所有者(用户)拥有,而且一个所有者可以拥有多个商店! (多对多关系)

如果我将所有者 uid 作为数组存储在商店文档中,那么在 Angular 中将很难查询我是所有者之一的文档。

或者,许多人建议我将他们的 uid 存储在地图中,如下所示:

shop = {
  name: string,
  owners: {
    id1: id1,
    id2: id2,
    ...etc
  }
}

然后像这样查询:

.where('owners.'+myUid, '==', myUid)

这很有用,除非我在查询时尝试按名称的字母顺序对商店列表进行排序。

一旦我添加 [orderBy],它会抱怨它需要创建一个索引,但问题是它想要创建一个包含我的 uid 和名称的索引,这意味着每个用户的索引(这不是实用)!

我做错了什么?

对于这个特定的查询,您将需要一种不同的方式来存储您的所有者。您可以简单地将所有者存储为字符串数组而不是映射,然后使用 array-contains:

查询它
collection
    .where('owners', 'array-contains', myUid)
    .orderBy('name')