我的数据库具有以下结构:

"groupA" : {
  "applications" : {
    "applicationID_132" : {
      "status" : "accepted"
    },
    "applicationID_423" : {
      "status" : "declined"
    },
    "applicationID_562" : {
      "status" : "accepted"
    }
  }
}


我试图通过以下方式检索具有“已接受”状态的应用程序快照(以便能够跳过获取所有应用程序):

return admin.database().ref('groupA').child('applications').orderByValue('status').equalTo('accepted')
                  .once('value')
                  .then(acceptedApplicationsSnapshot => {


似乎不起作用,也尝试了orderBy和orderByValue。可能遗漏了什么,或者处理这种情况的更好方法是什么?
感谢您的任何帮助!

最佳答案

尝试使用child.orderByChild().value()

在您的情况下:

return admin.database().ref('groupA').child('applications').orderByChild('status').equalTo('accepted')
                  .once('value')
                  .then(acceptedApplicationsSnapshot => {




您也可以使用orderByValue(),但是首先您需要获取要订购的参考-函数不接受参数。

如何使用orderByValue()?

如果您要使用.child(..),则applications在您的情况下返回的引用是orderByValue,而不是在执行此操作之前需要获取对“状态”的引用,例如:

admin.database().ref('groupA').child('applications').child('status').orderByValue(),然后您将应用数据之一filtering methods,例如。
.equalTo('accepted')...

关于javascript - Firebase orderByValue()。equalTo()不是函数(Node JS),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55131508/

10-09 20:44