Angularjs 我能把电话连到角火上吗?

Angularjs 我能把电话连到角火上吗?,angularjs,angularfire,Angularjs,Angularfire,在我的服务中,我使用angular fire对firebase进行了函数调用: filter : function(limit){ return $firebase(ref.child('stats').limit(limit)).$asArray(); }, 这很好,但如果我尝试添加orderByChild: filter : function(limit){ return $firebase(ref.child('stats').limit(limit).orderByCh

在我的服务中,我使用angular fire对firebase进行了函数调用:

filter : function(limit){
    return $firebase(ref.child('stats').limit(limit)).$asArray();
},
这很好,但如果我尝试添加orderByChild:

filter : function(limit){
    return $firebase(ref.child('stats').limit(limit).orderByChild('host')).$asArray();
},
我得到错误:TypeError:undefined不是一个函数

如何将这些调用链接在一起,以便按主机限制结果和顺序?

看起来有两个问题:

  • .limit()
    已弃用。查看更多详细信息

  • 虽然从技术上讲,您所做的应该是可行的(文档说
    .limit()
    .orderByChild()
    都返回一个新的
    查询对象),但我感觉这里有一个排序问题,
    .limit()
    可能返回一些无法访问新(er)方法的内容(如
    .orderByChild()

  • 我会尝试将您的代码片段更改为:

    filter: function(limit) {
        var query = ref.child('stats').orderByChild('host').limitToFirst(limit);
        return $firebase(query).$asArray();
    },
    

    我建议将它分成几个较小的语句,这样您就可以看到每个语句的结果。另外,如果您只执行
    orderByChild('host')
    ,而不执行
    limit()
    ,那么它是否有效?您是否收到消息抱怨
    limit()
    被弃用?请将orderByChild(…)放在limit()之前,放在前面语句,如文档中所示。另外,建议是
    limitToFirst()
    limitToLast()
    (limit()已被弃用)。请参阅此处,并在此处省去一些麻烦。