Javascript 当与多个where条件一起使用时,Firebase Firestore OrderBy不起作用
我试图根据Javascript 当与多个where条件一起使用时,Firebase Firestore OrderBy不起作用,javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,我试图根据messageUpdatedAt字段(时间戳)获得一组有序的结果。 尝试了下面的代码 firebase .firestore() .collection('conversations') .where('type', '==', 'direct') .where('ids', 'array-contains', id) .orderBy('messageUpdatedAt', 'DESC') .limi
messageUpdatedAt
字段(时间戳)获得一组有序的结果。
尝试了下面的代码
firebase
.firestore()
.collection('conversations')
.where('type', '==', 'direct')
.where('ids', 'array-contains', id)
.orderBy('messageUpdatedAt', 'DESC')
.limit(limit)
如果我运行这个,我会得到一个无序的结果集。但是如果我对数组包含where
条件(where('ids','array contains',id)
)进行注释,则结果是有序的(基于messageUpdatedAt
字段)在集合
对话
的下面添加了复合索引
type - Ascending
ids - Array
messageUpdatedAt - Descending
我做错什么了吗?是否仍然可以在不添加注释的情况下运行此操作并获得有序结果集(基于
messageUpdatedAt
字段)。对于我来说,某些文档的orderBy字段是未定义的,而某些文档没有该字段。这妨碍了文件的排序。我通过提供一个默认值(Unix epoch time)更新了这些字段,并使文档有序。对于我来说,某些文档的orderBy字段未定义,而某些文档没有该字段。这妨碍了文件的排序。我通过提供一个默认值(Unix历元时间)更新了这些字段,并使文档有序。范围筛选器只能应用于一个字段。不能使用2个字段。另外,请查看是否可以将值id放在单引号内。@根据文档,相等运算符未作为范围运算符列出。id
的值是一个字符串。@还有什么我可以尝试的吗?范围筛选器只能应用于一个字段。不能使用2个字段。另外,请查看是否可以将值id放在单引号内。@根据文档,相等运算符未作为范围运算符列出。id
的值是一个字符串。@还有什么我可以试试的吗?