Firebase 如何在Cloud Firestore中创建子集合索引?

Firebase 如何在Cloud Firestore中创建子集合索引?,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,我在Google上搜索并查看了CloudFireStore文档,没有发现任何关于如何声明子集合索引的内容。我已经宣布了类似的事情 ...{ "collectionId": "user/{uid}/feeds", "fields": [..] }... __escuser~1{uid}~1feeds__ 在indexes选项卡中,它是这样存储的 ...{ "collectionId": "user/{uid}/feeds", "fields": [..] }..

我在Google上搜索并查看了CloudFireStore文档,没有发现任何关于如何声明子集合索引的内容。我已经宣布了类似的事情

...{    
  "collectionId": "user/{uid}/feeds",
  "fields": [..]
}...
__escuser~1{uid}~1feeds__
在indexes选项卡中,它是这样存储的

...{    
  "collectionId": "user/{uid}/feeds",
  "fields": [..]
}...
__escuser~1{uid}~1feeds__

不知道我是否正确创建了它。

当你创建索引时,它实际上告诉你手动运行一次要创建索引的查询,然后它将生成一个URL,你可以复制粘贴到浏览器中等等

这就是你如何做到的:

  • 创建一个新目录
  • npm init
  • npm i--保存firebase管理员
  • 创建
    index.js
  • 将以下函数放入文档中

    const admin = require('firebase-admin');
    const serviceAccount = require('./firebase-creds.json');
    
    admin.initializeApp({
      credential: admin.credential.cert(serviceAccount),
      databaseURL: 'https://projectId.firebaseio.com'
    });
    
    function runQuery() {
      db
      .collection('users')
      .doc(someRandomUserId)
      .collection('feed')
      .where('read', '==', false)
      .where('timestamp', '<=', 1509889854742) //Or something else
      .get()
      .then(doc => {
        console.log(doc.data());
      })
      .catch(error => console.log(error));
    };
    runQuery();
    

    或者直接进入数据库的管理面板,在那里添加提要的索引。

    这似乎由@michael bleigh在这里回答:

    云Firestore索引基于集合名称,而不是完整的集合路径。因此,如果要在
    用户/{id}/消息
    上创建索引,正确的方法是在
    消息
    上创建索引


    对不起,您能澄清一下“子集合索引”是什么意思吗?你想做什么?有一个用户集合,每个
    用户
    集合都有另一个
    提要
    集合,我无法为子集合添加索引~@Shaxrillo我看到有人提到这个功能是计划好的,但还没有实现。而且它不会在beta版中实现。我也想要这个特性tank you@Chris,但我想手动添加它,而不是通过自动生成的urlOk,不管怎样,结果都是一样的,但请参见上面的内容。您不指定“子集合路径”,只指定集合id@Shaxrillo@Chris,但什么是“集合id”?我在firestore层次结构的不同部分有多个同名集合。e、 g./汽车/{carIds}/models和/杂志/{magazineId}/models如果我在“models”上放一个索引,firebase会对这两个集合应用索引吗?如果我想能够独立地为所有收藏编制索引,我是否必须为所有收藏命名唯一的名称?@Chris我想你误解了他想要的“子收藏索引”的意义。它不是索引到一个文档中的特定集合,而是索引每个文档中具有相同名称的每个集合。在firestore的计划中,但不存在yet@Thaina你确定这还不存在吗?你能指出你读这篇文章的地方吗?