我想獲取訂閱集合中的第一個檔案,然后使用該檔案作為起點來檢索接下來的 10 個檔案。我不立即檢索前 10 個的原因是我想運行一個 cron 作業來對資料進行分頁并更改每個作業運行的起始檔案。
static start: number = 1;
@Cron(CronExpression.EVERY_5_SECONDS)
async getAllTransaction(): Promise<void> {
this.getAtIndex(TransactionsService.start).then(res => {
const ref = database().ref('subscriptions').limitToFirst(10).startAt(res);
ref.once('value').then(item => {
console.log(item.val());
});
});
}
async getAtIndex(id: number): Promise<any> {
const ref = database().ref('subscriptions').limitToFirst(1);
const snapshot = await ref.once('value');
const value = snapshot.val();
return value;
}
但我得到這個錯誤
throw new Error('查詢:按優先級排序時,傳遞給startAt()的第一個引數,'
錯誤:查詢:按優先級排序時,傳遞給 startAt()、startAfter()、endAt()、endBefore() 或 equalTo() 的第一個引數必須是有效的優先級值(null、數字或字串)。
我嘗試使用任意數字作為 startAt() 的引數,但它回傳 null
uj5u.com熱心網友回復:
你res是一個DataSnapshot,它不是傳遞給的有效值startAt。你可能想通過res.key。
const ref = database().ref('subscriptions').limitToFirst(10).startAt(res.key);
另外:如果您沒有orderBy...為查詢指定任何子句,它會按過時的優先級值排序。由于您很可能希望通過密鑰訂購,因此orderByKey()請在所有查詢中使用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/519722.html
