Проблема с ключом $ в бесконечной прокрутке fb-util
Я использую fb-util для бесконечной прокрутки, и все выглядит хорошо. Однако, как только я попал на 250 элементов, я вижу следующую ошибку. Есть идеи, о чем это?
Ошибка: запрос: при упорядочении по ключу вы можете передать только один аргумент startAt(), endAt() или equalTo(). на Jh ( https://www.gstatic.com/firebasejs/3.2.1/firebase.js:431:117) на XgNd ( https://www.gstatic.com/firebasejs/3.2.1/firebase.js:441:298) по адресу r._grow (https://<>/content/script/firebase-util.min.js:10:8979) по адресу r._listen (https://<>/content/script/firebase-util.min.js:10:10961) в r.goTo (https://<>/content/script/firebase-util.min.js:10:8062) в r.moveTo (https://<>/content/script/firebase-util.min.js:10:3672) по адресу r.next (https://<>/content/script/firebase-util.min.js:10:17083) по адресу https://ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js:198:424 в xa.(анонимная функция) ( https://ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js:59:133) в l.$ Eval ( https://ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js:126:84)
Код:
var baseRef = firebase.database().ref().child(refPath);
var scrollRef = new firebase.util.Scroll(baseRef, '$key');
scrollRef.scroll.next(25);
var list = $firebaseArray(scrollRef);
list.scroll = scrollRef.scroll;
Код переднего конца:
<div infinite-scroll="vm.products.scroll.next(10)" infinite-scroll-distance="1">
nb: изменение ключа с $key на $priority или name или productid перестало выдавать ошибку. Но это привело к замене более ранних элементов.
1 ответ
Поэтому, хотя у меня нет ответа на первую часть вопроса, основанного на дополнительном примечании, у меня есть это исправление:
var scrollRef = new firebase.util.Scroll(baseRef, '$priority', {maxCacheSize: 750, windowSize: 500});
Установка maxCacheSize и windowSize в более высокое значение должна решить проблему. В соответствии с документацией, если мы превысим windowSize, то начало массива будет обрезано, чтобы ограничить размер.
Документация:
Keys/values that can be passed via opts:
{int} windowSize: the maximum number of records to have loaded in the list at any given time. 3-5 times the size of the viewable window is a good optimization, depending on how fast content is scrolled and the payload of each record (i.e. how long it takes to download).
{int} maxCacheSize: in general, leave this as the default. This controls the internal cursor's cache, which is used to find the current position in the list. This controls how many keys it can load at any given time. This is, by default, three times the size of windowSize and should always be larger than windowSize.