【问题标题】:Firebase orderbypriority not workingFirebase orderbypriority 不起作用
【发布时间】:2016-04-30 12:36:52
【问题描述】:

我目前正在使用 Firebase 作为数据库,并尝试使用 orderbypriority 对我的 firebase 条目进行排序。但是我遇到了 orderbypriority 的问题。当我在 firebase 引用上使用 orderbypriority 来查询我的数据库时,它不会按照每个元素的优先级顺序返回数据。这是我正在使用的代码:

Firebase answersRef = new Firebase("/Questions/ModeratorQuestions/General/" + question.getKey() + "/Answers");
answersRef.orderByPriority().addListenerForSingleValueEvent(new ValueEventListener(
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
        System.out.println(dataSnapshot);
        }

        @Override
        public void onCancelled(FirebaseError firebaseError) {

        }
});

这是我的数据库在 firebase 中的设置方式

-Questions
    -ModeratorQuestions
        -General
            -QuestionIdNumber
                -Answers
                    -Answer 1 (With priority of 0)
                    -Answer 2 (With priority of 1)
                    -Answer 3 (With priority of 2)

可以在here找到快照。

这是我尝试查询上面在我的代码中指定的 url 时从 dataSnapshot 得到的输出(我从 url 中取出了项目名称)。

{ key = Answers, value = {Douglas_Comer={.priority=0.0, .value=0}, Sophie_Dee={.priority=1.0, .value=0}} }
{ key = Answers, value = {Yes={.priority=0.0, .value=0}, No={.priority=1.0, .value=0}} }
{ key = Answers, value = {Go_on_a_shopping_spree_at_the_mall={.priority=1.0, .value=0}, Donate_it_to_charity={.priority=3.0, .value=0}, Stocks={.priority=4.0, .value=0}, Go_to_Walmart_I'll_figure_out_the_rest_when_I_get_there={.priority=2.0, .value=0}, DANCE={.priority=0.0, .value=0}} }
{ key = Answers, value = {Yes={.priority=0.0, .value=0}, Love_is_Dead={.priority=2.0, .value=0}, No={.priority=1.0, .value=0}} }
{ key = Answers, value = {three_landmines={.priority=1.0, .value=0}, 1,000_non-venomous_snakes={.priority=0.0, .value=0}} }
{ key = Answers, value = {have_free,_coach-seating,_air_travel_once_a_month={.priority=1.0, .value=0}, own_a_yacht={.priority=0.0, .value=0}} }
{ key = Answers, value = {Valentine's={.priority=3.0, .value=0}, Thanksgiving={.priority=2.0, .value=0}, Other={.priority=4.0, .value=0}, Halloween={.priority=1.0, .value=0}, Christmas={.priority=0.0, .value=0}} }
{ key = Answers, value = {Bread={.priority=0.0, .value=0}, Tortillas={.priority=3.0, .value=0}, Pasta={.priority=2.0, .value=0}, Rice={.priority=1.0, .value=0}} }
{ key = Answers, value = {fight_your_crush={.priority=0.0, .value=0}, fight_a_bear_cub={.priority=1.0, .value=0}} }
{ key = Answers, value = {Happy_relationship={.priority=0.0, .value=0}, Eligible_Bachelor={.priority=1.0, .value=0}, NULL_POINTER_EXCEPTION={.priority=2.0, .value=0}, Focused_on_beautiful_Science={.priority=4.0, .value=0}, I_have_no_idea_what_I'm_doing={.priority=3.0, .value=0}} }
{ key = Answers, value = {Apples={.priority=0.0, .value=0}, Bananas={.priority=1.0, .value=0}, Oranges={.priority=2.0, .value=0}} }

如您所见,它们中的大多数都不是按优先级排序的。我不明白为什么。如果有人可以帮助我解决我做错的事情,将不胜感激。如果您需要更多信息,我也可以回答问题。

【问题讨论】:

  • 您能否将 Firebase 数据结构的简短快照复制/粘贴到问题中?
  • @Jay 不,我需要至少 10 个声望才能发布图片,我没有,但可以在 imgur.com/y5ydfoz 找到图片
  • 您不应该发布图像,而应该发布实际文本。您可以通过按“导出”按钮轻松地从 Firebase 信息中心获取它。
  • 弗兰克说了什么。复制并粘贴文本结构或使用导出按钮

标签: android firebase


【解决方案1】:

地图中的项目没有定义的顺序。但是这些项目是从 Firebase 以正确的顺序检索的,您可以验证是否循环它们:

public void onDataChange(DataSnapshot dataSnapshot) {
    for (DataSnapshot child: dataSnapshot.getChildren()) {
        System.out.println(child.getValue());
    }
}

查看相同的问题,但对于 iOS:Issue displaying array of image from url

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-04
    • 2018-09-18
    • 2018-06-26
    • 2018-02-07
    • 2016-12-05
    • 2018-10-22
    • 2017-05-17
    • 2017-03-28
    相关资源
    最近更新 更多