【发布时间】:2020-04-01 04:41:20
【问题描述】:
我正在尝试从 Firebase 实时数据库迁移到 Cloud Firestore,以便在集合之间使用“复杂”查询,但我发现了一些我不知道如何解决的“问题”。
我的服务器使用 Express JS 和 Firebase Admin SDK。我正在尝试为我的管理仪表板创建一个 CRUD 路由器,但我收到以下错误:
"9 FAILED_PRECONDITION:查询需要索引。您可以在这里创建它:...
当我访问该 URL (...) 时出现一些错误,我没有足够的权限...好吧,无论如何,经过一些研究后,我了解到“复杂”查询需要索引,并且它们必须超过一个。
这是我当前的路由器代码,因此您可以看到我想要实现的目标:
// GET - Get users
router.get('/', async (req: Request, res: Response) => {
...
let ref: any = db.collection('users').orderBy('createdAt');
Object.keys(req.query).forEach(key => {
ref = ref.where(key, '==', req.query[key]);
});
...
});
正如您所见,当我迭代 req.query 键时,我正在向查询中添加条件语句。我的想法是从客户端以编程方式添加自定义过滤器。
根据我从文档中了解到的,我应该为每个文档属性创建一个复杂的索引类型。
因此,我应该怎么做才能实现上述想法?提前致谢。
【问题讨论】:
-
您应该能够使用该链接准确地创建您需要的索引。如果它不起作用,请联系 Firebase 支持。 support.google.com/firebase/contact/support
标签: javascript node.js firebase express google-cloud-firestore