filter和orderBy在不同的字段上

时间:2019-07-23 08:22:14

标签: javascript firebase google-cloud-firestore

我想按时间填写用户和订单,但这不起作用。

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

1 个答案:

答案 0 :(得分:0)

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

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

所以:

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

另请参阅: