【问题标题】:Angular Firebase: Querying documents with specific referenceAngular Firebase:查询具有特定参考的文档
【发布时间】:2020-04-01 19:13:21
【问题描述】:

我遇到的问题是在尝试使用不同集合中另一个文档的引用来查询文档时。这是我的实际情况:

两个集合:“帖子”和“用户”。 每个“posts”文档都有一个“user_id”字段(是的,我来自 SQL),它是对“users”文档的引用。 每个“用户”文档都有一个对“帖子”文档的引用数组。

我不知道这是否有效。我愿意倾听其他方式来格式化我的文档关系。

我有这个想法: 数组 的引用?在“用户”文档中创建集合?还是每个“posts”文档中的实际 string 字段与“users”文档的 UID?

我已经尝试使用 where() 函数进行查询,但不适用于我的实际架构。

顺便说一句,我正在使用 Express.js 作为后端。

【问题讨论】:

  • 如果posts有uid,也许你可以尝试db.doc(uid).get ()获取post的用户文档

标签: angular firebase express google-cloud-firestore


【解决方案1】:

好的,这是我自己想出来的:

let listPosts = [];
  for (const post of user.list_posts) {
    // eslint-disable-next-line no-await-in-loop
    listPosts.push((await db.collection('/posts').doc(post._path.segments[1]).get()).data());
  }

【讨论】:

    【解决方案2】:

    您必须将用户 ID(集合)保存在文档字段中。

    public user(data) {
        return firebase.firestore().collection('users').add(data).then(ref => {
          firebase.firestore().doc('users/' + ref.id).update({ id: ref.id });
        });
      }
    

    after:如果posts有uid,可以试试

     public getUsers(uid) {
        return firebase.firestore().doc('users/' + uid).get();
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-06
      • 1970-01-01
      • 2019-08-04
      • 2015-07-06
      • 1970-01-01
      • 2016-10-20
      • 1970-01-01
      相关资源
      最近更新 更多