Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase firestore js多个orderBy未排序结果_Firebase_Google Cloud Firestore - Fatal编程技术网

Firebase firestore js多个orderBy未排序结果

Firebase firestore js多个orderBy未排序结果,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,我正在尝试执行一个查询,该查询包含2个orderBy,后面是一个startAt,它在第一个orderBy orderId上应用了一个过滤器: 让result=wait db//db=firebase.firestore .收款“/订单” .其中'userId','=',userId//userId='zHJgWUFL54deq4a…' .orderBy'orderId' .orderBy'co','desc' .startAtfilter//filter='2020-01-YND' 收到 订单

我正在尝试执行一个查询,该查询包含2个orderBy,后面是一个startAt,它在第一个orderBy orderId上应用了一个过滤器:

让result=wait db//db=firebase.firestore .收款“/订单” .其中'userId','=',userId//userId='zHJgWUFL54deq4a…' .orderBy'orderId' .orderBy'co','desc' .startAtfilter//filter='2020-01-YND' 收到 订单收集:

创建的复合索引: 结果:结果不按co降序排序

我在firestore的github中创建了一个问题,当我得到答案时,我会在这里和那里进行更新

多谢各位

--------------------------- 更新:

不幸的是,切换orderBy的问题是我没有得到任何结果。。。我已经创建了综合索引。 筛选器用于搜索orderId搜索文本,而不是全文搜索,因为它不受支持

因此,这两个查询返回[]:

// changed orderBy order
 let result = await db    // db = firebase.firestore()
    .collection('/orders')
    .where('userId', '==', userId) // userId = 'zHJgWUFL54deq4a...'
    .orderBy('co', 'desc')
    .orderBy('orderId')
    .startAt(filter)      // filter = '2020-01-YND'
    .get()

and: 

// added endAt
 let result = await db    // db = firebase.firestore()
    .collection('/orders')
    .where('userId', '==', userId) // userId = 'zHJgWUFL54deq4a...'
    .orderBy('co', 'desc')
    .orderBy('orderId')
    .startAt(filter)      // filter = '2020-01-YND'
    .endAt(filter + '\uf8ff')
    .get()
但是,如果我删除orderBy'co',desc',我会得到结果,但仍然不是我想要的:

 let result = await db    // db = firebase.firestore()
    .collection('/orders')
    .where('userId', '==', userId) // userId = 'zHJgWUFL54deq4a...'
    .orderBy('orderId')
    .startAt(filter)      // filter = '2020-01-YND'
    .endAt(filter + '\uf8ff')
    .get()

returns:
// Item 1
{
  "co": 0,
  "userId": "zHJgWUFL54deq4a...",
  "orderId": "2020-01-YNDKALCK"
}

// Item 2
{
  "co": 1,
  "userId": "zHJgWUFL54deq4a...",
  "orderId": "2020-01-YNDSCSAD"
}

如果我正确理解了您的问题,我想您可能没有注意到,当您按多个字段排序时,文档是按照方法链中orderBys的顺序排序的

正如报告中所述:

您还可以按多个字段排序。例如,如果你想 按州排序,每个州内按人口排序 降序排列:

  let byStateByPop = citiesRef.orderBy('state').orderBy('population', 'desc');
换句话说,在您的例子中,结果首先按orderId排序,然后在每个orderId中按co排序

因此,您下面的结果是正确的,因为2020-01-YNDKALK在2020-01-YNDSCSAD之前:

您应该尝试使用共享相同orderId值的记录


如果您希望结果首先由co排序,只需交换orderBy并构建新索引。

向我们展示您的索引的外观,并请将您的数据库结构添加为屏幕截图。谢谢,但很遗憾,我的问题仍然无法解决
// changed orderBy order
 let result = await db    // db = firebase.firestore()
    .collection('/orders')
    .where('userId', '==', userId) // userId = 'zHJgWUFL54deq4a...'
    .orderBy('co', 'desc')
    .orderBy('orderId')
    .startAt(filter)      // filter = '2020-01-YND'
    .get()

and: 

// added endAt
 let result = await db    // db = firebase.firestore()
    .collection('/orders')
    .where('userId', '==', userId) // userId = 'zHJgWUFL54deq4a...'
    .orderBy('co', 'desc')
    .orderBy('orderId')
    .startAt(filter)      // filter = '2020-01-YND'
    .endAt(filter + '\uf8ff')
    .get()
 let result = await db    // db = firebase.firestore()
    .collection('/orders')
    .where('userId', '==', userId) // userId = 'zHJgWUFL54deq4a...'
    .orderBy('orderId')
    .startAt(filter)      // filter = '2020-01-YND'
    .endAt(filter + '\uf8ff')
    .get()

returns:
// Item 1
{
  "co": 0,
  "userId": "zHJgWUFL54deq4a...",
  "orderId": "2020-01-YNDKALCK"
}

// Item 2
{
  "co": 1,
  "userId": "zHJgWUFL54deq4a...",
  "orderId": "2020-01-YNDSCSAD"
}
  let byStateByPop = citiesRef.orderBy('state').orderBy('population', 'desc');
// Item 1
{
  "co": 0,
  "userId": "zHJgWUFL54deq4a...",
  "orderId": "2020-01-YNDKALCK"
}

// Item 2
{
  "co": 1,
  "userId": "zHJgWUFL54deq4a...",
  "orderId": "2020-01-YNDSCSAD"
}