【发布时间】:2014-12-09 00:53:13
【问题描述】:
给定以下数据结构:
{
"comments" : {
"-JcBbk64Gpm1SKoFHv8b" : {
"content" : "blah",
"createdAt" : 1417550954985,
"link" : "http%3A%2F%2Flocalhost%3A3000%2F",
"recommendedCount" : 0,
"replies" : {
"-JcBbk8gF_nQ_vjwag61" : true
},
"replyCount" : 1
},
"-JcBbk8gF_nQ_vjwag61" : {
"content" : "blah blah",
"createdAt" : 1417550955151,
"link" : "http%3A%2F%2Flocalhost%3A3000%2F",
"recommendedCount" : 0,
"replyCount" : 1,
"replyToComment" : "-JcBbk64Gpm1SKoFHv8b"
}
},
"links" : {
"http%3A%2F%2Flocalhost%3A3000%2F" : {
"author" : 5,
"commentCount" : 2,
"comments" : {
"-JcBbk64Gpm1SKoFHv8b" : true,
"-JcBbk8gF_nQ_vjwag61" : true
},
"createdAt" : 1417550954931,
"ratingCount" : 2,
"recommendedCount" : 32,
"score" : 91,
"title" : "A Christian vs. an Atheist: Round 2",
"url" : "http://localhost:3000/"
}
}
}
我想检索给定链接的所有 cmets,并按时间倒序对它们进行排序。我已经做到了这一点,但我不知道如何进行反向排序,因为我已经使用 orderByChild 通过链接缩小结果范围:
ref.orderByChild('link').equalTo(currentLink).on('value', function (snap) {
console.log(snapshot.val());
});
如果我像这样第二次调用 orderByChild():
ref.orderByChild('link').equalTo(currentLink).orderByChild('createdAt').on('value', function (snap) {
console.log(snapshot.val());
});
失败并显示以下错误消息:
未捕获的错误:Query.orderByChild:您不能合并多个 orderBy 调用。
我被难住了。有什么建议吗?
【问题讨论】:
-
不支持一次查询多次调用orderBy。尝试时应该会收到一条非常明确的错误消息。请学会在你的问题中加入这样的错误信息,因为“它失败了”是很笼统的。
-
@FrankvanPuffelen 我试图弄清楚如何“检索给定链接的所有 cmets 并按时间倒序对它们进行排序”。我意识到我这样做的方式行不通。我正在尝试找出一些可行的方法。
标签: javascript firebase