AngularFire的优先级0.5.0

时间:2013-12-27 18:01:08

标签: javascript firebase angularfire

我们说我有一系列文章:

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();
  • 如何获取这些文章并按日期优先级排序?
  • 如何查询 X-Date Y-Date 的一系列文章?
  • 如何检索这些优先级的值?

1 个答案:

答案 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交叉引用给定时间。