gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 11:08:24 27 4
gpt4 key购买 nike

我在 Google 上搜索并检查了 Cloud Firestore 文档,但没有发现任何有关如何声明子集合索引的信息。我已经声明了类似的内容

...{    
"collectionId": "user/{uid}/feeds",
"fields": [..]
}...

在索引选项卡中它的存储方式如下

__escuser~1{uid}~1feeds__

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

最佳答案

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

enter image description here

这就是你的做法:

  1. 创建一个新目录

  2. npm init

  3. npm i --save firebase-admin

  4. 创建index.js

  5. 将以下函数放入文档中

     const admin = require('firebase-admin');
    const serviceAccount = require('./firebase-creds.json');

    admin.initializeApp({
    credential: admin.credential.cert(serviceAccount),
    databaseURL: 'https://projectId.firebaseio.com'
    });

    const db = admin.firestore();

    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();
  6. 运行node index.js

这会吐出类似这样的内容:

{ 错误:查询需要索引。您可以在此处创建它:https://console.firebase.google.com/project/project-projectID/database/firestore/indexes?create_index=longRandomString ...}

复制链接并将其粘贴到您的浏览器中。

enter image description here

更新

要手动添加索引(通过 CLI),您可以执行以下操作:

{
"indexes": [
{
"collectionId": "feed",
"fields": [
{ "fieldPath": "read", "mode": "ASCENDING" },
{ "fieldPath": "timestamp", "mode": "ASCENDING" },
...
]
}
]
}

或者只需进入数据库中的管理面板并在其中添加提要索引。

关于firebase - 如何在 Cloud Firestore 中创建子集合索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47029227/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com