我正在使用Firebase Database Rest Api并且我有一個應用程式來顯示新聞,我想要一種通過使用每個帖子的(查看次數)計數降序來對這些新聞進行排序的方法,同時,我正在獲取 10 個元素 LimitToFirst( 10) 從 firebase 資料庫到 Listview 并在滾動時獲取另外 10 個元素......所以我正在尋找一種方法來按(服務器端)按最高視圖對所有新聞進行排序,然后獲取 10 個元素而不獲取所有資料然后由客戶訂購,因為除此之外如果還有很多資料會花費很多時間我只會獲取10個元素并將它們顯示給串列視圖,問題是我的資料沒有固定的firebase 中的路徑以在規則中索引它們。澄清一下,我使用 c# 并且有三個訂購選項:
OrderBy(屬性名稱)
按值排序()
OrderByKey()
我的資料結構是這樣的: Main/News/Categories/Education/PostId/
我的json:
{
"Main" : {
"News" : {
"Categories" : {
"Education" : {
"-Mn7-ZxkUPO01ifhtpEn" : {
"Text" : "some text",
"Title" : "some title",
"Views" : 5
},
"-Mn7-ZxkUPO01ifhtp11En" : {
"Text" : "some text",
"Title" : "some title",
"Views" : 5
},
"-Mn7-ZxkUPO0112ifhtpEn" : {
"Text" : "some text",
"Title" : "some title",
"Views" : 12
},
"-Mn7-ZxkUPO01dxifhtpEn" : {
"Text" : "some text",
"Title" : "some title",
"Views" : 545
},
"-Mn7-ZxkUPO01sdifhtpEn" : {
"Text" : "some text",
"Title" : "some title",
"Views" : 5
},
"-Mn7-ZxkUPO01ifddhtpEn" : {
"Text" : "some text",
"Title" : "some title",
"Views" : 200
},
"-Mn7-ZxkUPO01ifdshtpEn" : {
"Text" : "some text",
"Title" : "some title",
"Views" : 1
},
"-Mn7-ZxkUPO01ifhtdxpEn" : {
"Text" : "some text",
"Title" : "some title",
"Views" : 223
},
"-Mn7-ZxkUPO01ifhewtpEn" : {
"Text" : "some text",
"Title" : "some title",
"Views" : 451
},
"-Mn7-ZxkUPO01idsdfhtpEn" : {
"Text" : "some text",
"Title" : "some title",
"Views" : 532
},
"-Mn7-ZxkUPO01ifh2tpEn" : {
"Text" : "some text",
"Title" : "some title",
"Views" : 1500
},
"-Mn7-ZxkUPOd01ifh2tpEn" : {
"Text" : "some text",
"Title" : "some title",
"Views" : 45
},
"-Mn7-ZxkUPO01ifh21tpEn" : {
"Text" : "some text",
"Title" : "some title",
"Views" : 2
},
"-Mn7-ZxkUPO01ifh2dstpEn" : {
"Text" : "some text",
"Title" : "some title",
"Views" : 4
},
"-Mn7-ZxkUPO01ifh2txpEn" : {
"Text" : "some text",
"Title" : "some title",
"Views" : 4
},
"-Mn7-ZxkUPO01ifhds2tpEn" : {
"Text" : "some text",
"Title" : "some title",
"Views" : 2
},
"-Mn7-ZxkUPO01iddfh2tpEn" : {
"Text" : "some text",
"Title" : "some title",
"Views" : 33
},
"-Mn7-ZxkUPO01idxfh2tpEn" : {
"Text" : "some text",
"Title" : "some title",
"Views" : 52
},
"-Mn7-ZxkUPO01idsdfh2tpEn" : {
"Text" : "some text",
"Title" : "some title",
"Views" : 1
},
"-Mn7-ZxkUPO01ifh2tpEdsn" : {
"Text" : "some text",
"Title" : "some title",
"Views" : 1000000
}
}
}
}
}
}
我的 C# 代碼:
public string LastId;
public class NewsClass
{
public string Title { set; get; }
public string Text { set; get; }
public int Views { set; get; }
}
//for the first 10 items (when page opened)
//work good
var Data = await firebaseclient
.Child("Main/News/Categories/Education")
.OrderBy("Views")
.LimitToLast(10)
.OnceAsync<NewsClass>();
LastId = Data.Last().Key;
//this work when user scroll down listview (get another 10)
var Data = await firebaseclient
.Child("Main/News/Categories/Education")
.OrderBy("Views")
.StartAt(LastId)
.LimitToLast(10)
.OnceAsync<NewsClass>();
//update last id
LastId = Data.Last().Key;
有沒有辦法解決這個程序 最好的問候:)
uj5u.com熱心網友回復:
為了能夠通過 REST API 查詢/訂購子屬性,您需要在資料庫規則中定義該屬性的索引。
{
"rules": {
...
"Main": {
"News": {
"Categories": {
"Education": {
".indexOn": "views"
}
}
}
}
}
}
如果此處的任何節點名稱在您的規則中是可變的,您也可以在此處使用通配符捕獲變數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/365997.html
