我们说我有一系列文章:
var articlesRef = new Firebase("https://example.firebaseio.com/articles");
$scope.articles = $firebase(articlesRef);
我想添加一些new Date()
优先级的文章:
$scope.articles.$add(newArticle1).$priority = new Date();
$scope.articles.$add(newArticle2).$priority = new Date();
$scope.articles.$add(newArticle3).$priority = new Date();
答案 0 :(得分:1)
如果您尝试按时间订购帖子,我建议不使用Date()并仅依赖$add
。 $add
会自动创建按时间顺序排列的项目列表。如果没有优先级,Firebase会自动按其密钥名称对项目进行排序。
要按时间顺序获取文章,只需使用orderByPriority
过滤器,例如:<ul ng-repeat="article in articles | orderByPriority">
。
从特定数据中查询范围变得更加棘手 - 如果您知道要开始范围的文章的关键名称,则可以将其传递给startAt。 $add
会返回Firebase参考,您可以通过.name()
获取密钥名称。
例如,以下代码段将创建一个窗口,从刚添加的文章开始,最多10个文章:
var justAdded = $scope.articles.$add(newArticle);
var query = ref.startAt(justAdded.name()).limit(10);
对于需要能够在所有文章中随时查询的综合解决方案,您可以考虑为通过$add
添加的每个项目存储时间。我再次避免使用Date()因为客户端时间不可信,而是使用Firebase的服务器端时间戳:https://www.firebase.com/docs/javascript/servervalue/TIMESTAMP.html更可靠。例如,您可以存储添加特定文章的时间,以便稍后可以通过$add
自动生成的文章ID交叉引用给定时间。