【问题标题】:filter and orderBy on the diffrent fieldfilter 和 orderBy 在不同的领域
【发布时间】:2019-07-23 08:22:14
【问题描述】:

我想按时间填充用户并订购。但它不起作用。

await firebase
                .firestore()
                .collection('chats')
                .where('users', 'array-contains', _usr.email)
                .orderBy('lastmessage')
                .onSnapshot(async res => {
                    const chats = res.docs.map(_doc => _doc.data());
                    await this.setState({
                        email: _usr.email,
                        chats: chats,
                        friends: []
                    });
                })

错误是

Uncaught Error in onSnapshot: FirebaseError: The query requires an index. You can create it here

【问题讨论】:

  • 你能解决这个问题吗?

标签: javascript firebase google-cloud-firestore


【解决方案1】:

Firestore 会自动为每个单独的字段生成索引,这样您就可以执行许多查询,而无需任何额外的设置工作。但是您在此处的查询需要一个不会自动生成的附加索引,因此您必须自己在 Firebase 控制台中进行设置。

如果您在浏览器的 JavaScript 控制台中查看错误消息,您会看到它包含一个链接。如果您点击该链接,它将带您进入 Firebase 控制台中的一个页面,其中所有信息都已预先填充,以便为您生成正确的索引。

所以:

  1. 单击错误消息中的链接。
  2. 在您到达的页面中单击创建索引按钮。
  3. 稍等片刻,直到索引完全生成。

另见:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多