【发布时间】:2020-08-10 01:17:45
【问题描述】:
我已经尝试过这种方法,但得到了Uncaught FirebaseError: Function Query.startAfter() requires a valid first argument, but it was undefined. lastVisible 在控制台上获得了价值。代码如下:
function loadMoreButtonAction() {
fetchRequest(true);
}
function fetchRequest(isFromLoadMore) {
var table = document.getElementById("outputTableID");
var lastVisible;
var tableIndex;
if (isFromLoadMore == false) {
if (table.rows.length > 2) {
resetTable(table);
}
var first = firestore.collection(parentNode).orderBy("serialNo").limit(5);
first.get().then((querySnapshot) => {
// Get the last visible document
lastVisible = querySnapshot.docs[querySnapshot.docs.length-1];
console.log("lastVisible", lastVisible);
tableIndex = querySnapshot.size;
document.getElementById("wallpaperCount").innerHTML = 'Total Items: ' + tableIndex + '';
querySnapshot.forEach((doc) => {
var productItem = Object.create(wallpapers);
productItem.nodeId = doc.id;
productItem.serialNo = doc.data().serialNo;
productItem.title = doc.data().title;
productItem.downloadNumber = doc.data().downloadNumber;
productItem.isPremimumItem = doc.data().isPremimumItem;
productItem.wallpaper1125_2436ImgName = doc.data().wallpaper1125_2436ImgName;
productItem.wallpaper1242_2208ImgName = doc.data().wallpaper1242_2208ImgName;
productItem.wallpaper1242_2688ImgName = doc.data().wallpaper1242_2688ImgName;
productItem.wallpaper828_1792ImgName = doc.data().wallpaper828_1792ImgName;
productItem.wallpaper750_1334ImgName = doc.data().wallpaper750_1334ImgName;
productItem.wallpaper640_1136ImgName = doc.data().wallpaper640_1136ImgName;
productItem.wallpaper1125_2436Url = doc.data().wallpaper1125_2436Url;
productItem.wallpaper1242_2208Url = doc.data().wallpaper1242_2208Url;
productItem.wallpaper1242_2688Url = doc.data().wallpaper1242_2688Url;
productItem.wallpaper828_1792Url = doc.data().wallpaper828_1792Url;
productItem.wallpaper750_1334Url = doc.data().wallpaper750_1334Url;
productItem.wallpaper640_1136Url = doc.data().wallpaper640_1136Url;
productItem.wallpaper1125_2436ImgStorageRef = doc.data().wallpaper1125_2436ImgStorageRef;
productItem.wallpaper1242_2208ImgStorageRef = doc.data().wallpaper1242_2208ImgStorageRef;
productItem.wallpaper1242_2688ImgStorageRef = doc.data().wallpaper1242_2688ImgStorageRef;
productItem.wallpaper828_1792ImgStorageRef = doc.data().wallpaper828_1792ImgStorageRef;
productItem.wallpaper750_1334ImgStorageRef = doc.data().wallpaper750_1334ImgStorageRef;
productItem.wallpaper640_1136ImgStorageRef = doc.data().wallpaper640_1136ImgStorageRef;
productItem.wallpaper1125_2436FacebookPhotoID = doc.data().wallpaper1125_2436FacebookPhotoID;
productItem.wallpaper1242_2208FacebookPhotoID = doc.data().wallpaper1242_2208FacebookPhotoID;
productItem.wallpaper1242_2688FacebookPhotoID = doc.data().wallpaper1242_2688FacebookPhotoID;
productItem.wallpaper828_1792FacebookPhotoID = doc.data().wallpaper828_1792FacebookPhotoID;
productItem.wallpaper750_1334FacebookPhotoID = doc.data().wallpaper750_1334FacebookPhotoID;
productItem.wallpaper640_1136FacebookPhotoID = doc.data().wallpaper640_1136FacebookPhotoID;
var row = table.insertRow(2);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
var cell4 = row.insertCell(3);
var cell5 = row.insertCell(4);
var cell6 = row.insertCell(5);
var cell7 = row.insertCell(6);
var cell8 = row.insertCell(7);
var cell9 = row.insertCell(8);
var cell10 = row.insertCell(9);
var cell11 = row.insertCell(10);
cell1.innerHTML = productItem.serialNo;
cell2.innerHTML = productItem.title;
cell3.innerHTML = productItem.downloadNumber;
cell4.innerHTML = productItem.isPremimumItem;
appendImageOnCell(cell5, "./utilities/images/tick.png"); //productItem.wallpaper1125_2436Url
appendImageOnCell(cell6, "./utilities/images/tick.png"); //productItem.wallpaper1242_2208Url
appendImageOnCell(cell7, "./utilities/images/tick.png"); //productItem.wallpaper1242_2688Url
appendImageOnCell(cell8, "./utilities/images/tick.png"); //productItem.wallpaper828_1792Url
appendImageOnCell(cell9, "./utilities/images/tick.png"); //productItem.wallpaper750_1334Url
appendImageOnCell(cell10, productItem.wallpaper640_1136Url);
appendButtonOnCell(cell11, productItem);
});
});
} else {
var second = firestore.collection(parentNode).orderBy("serialNo").startAfter(lastVisible).limit(5);
second.get().then((querySnapshot) => {
// Get the last visible document
lastVisible = querySnapshot.docs[querySnapshot.docs.length-1];
console.log("lastVisible", lastVisible);
tableIndex = tableIndex + querySnapshot.size;
document.getElementById("wallpaperCount").innerHTML = 'Total Items: ' + tableIndex + '';
querySnapshot.forEach((doc) => {
var productItem = Object.create(wallpapers);
productItem.nodeId = doc.id;
productItem.serialNo = doc.data().serialNo;
productItem.title = doc.data().title;
productItem.downloadNumber = doc.data().downloadNumber;
productItem.isPremimumItem = doc.data().isPremimumItem;
productItem.wallpaper1125_2436ImgName = doc.data().wallpaper1125_2436ImgName;
productItem.wallpaper1242_2208ImgName = doc.data().wallpaper1242_2208ImgName;
productItem.wallpaper1242_2688ImgName = doc.data().wallpaper1242_2688ImgName;
productItem.wallpaper828_1792ImgName = doc.data().wallpaper828_1792ImgName;
productItem.wallpaper750_1334ImgName = doc.data().wallpaper750_1334ImgName;
productItem.wallpaper640_1136ImgName = doc.data().wallpaper640_1136ImgName;
productItem.wallpaper1125_2436Url = doc.data().wallpaper1125_2436Url;
productItem.wallpaper1242_2208Url = doc.data().wallpaper1242_2208Url;
productItem.wallpaper1242_2688Url = doc.data().wallpaper1242_2688Url;
productItem.wallpaper828_1792Url = doc.data().wallpaper828_1792Url;
productItem.wallpaper750_1334Url = doc.data().wallpaper750_1334Url;
productItem.wallpaper640_1136Url = doc.data().wallpaper640_1136Url;
productItem.wallpaper1125_2436ImgStorageRef = doc.data().wallpaper1125_2436ImgStorageRef;
productItem.wallpaper1242_2208ImgStorageRef = doc.data().wallpaper1242_2208ImgStorageRef;
productItem.wallpaper1242_2688ImgStorageRef = doc.data().wallpaper1242_2688ImgStorageRef;
productItem.wallpaper828_1792ImgStorageRef = doc.data().wallpaper828_1792ImgStorageRef;
productItem.wallpaper750_1334ImgStorageRef = doc.data().wallpaper750_1334ImgStorageRef;
productItem.wallpaper640_1136ImgStorageRef = doc.data().wallpaper640_1136ImgStorageRef;
productItem.wallpaper1125_2436FacebookPhotoID = doc.data().wallpaper1125_2436FacebookPhotoID;
productItem.wallpaper1242_2208FacebookPhotoID = doc.data().wallpaper1242_2208FacebookPhotoID;
productItem.wallpaper1242_2688FacebookPhotoID = doc.data().wallpaper1242_2688FacebookPhotoID;
productItem.wallpaper828_1792FacebookPhotoID = doc.data().wallpaper828_1792FacebookPhotoID;
productItem.wallpaper750_1334FacebookPhotoID = doc.data().wallpaper750_1334FacebookPhotoID;
productItem.wallpaper640_1136FacebookPhotoID = doc.data().wallpaper640_1136FacebookPhotoID;
var row = table.insertRow(tableIndex);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
var cell4 = row.insertCell(3);
var cell5 = row.insertCell(4);
var cell6 = row.insertCell(5);
var cell7 = row.insertCell(6);
var cell8 = row.insertCell(7);
var cell9 = row.insertCell(8);
var cell10 = row.insertCell(9);
var cell11 = row.insertCell(10);
cell1.innerHTML = productItem.serialNo;
cell2.innerHTML = productItem.title;
cell3.innerHTML = productItem.downloadNumber;
cell4.innerHTML = productItem.isPremimumItem;
appendImageOnCell(cell5, "./utilities/images/tick.png"); //productItem.wallpaper1125_2436Url
appendImageOnCell(cell6, "./utilities/images/tick.png"); //productItem.wallpaper1242_2208Url
appendImageOnCell(cell7, "./utilities/images/tick.png"); //productItem.wallpaper1242_2688Url
appendImageOnCell(cell8, "./utilities/images/tick.png"); //productItem.wallpaper828_1792Url
appendImageOnCell(cell9, "./utilities/images/tick.png"); //productItem.wallpaper750_1334Url
appendImageOnCell(cell10, productItem.wallpaper640_1136Url);
appendButtonOnCell(cell11, productItem);
});
});
}
}
我在这里错过了什么?
谢谢!
【问题讨论】:
-
请参阅 Paginate data with query cursors 上的 Firebase 文档。
-
您好,先生,我在文档的帮助下进行了尝试,但我认为我的
lastVisible = querySnapshot.docs[querySnapshot.docs.length-1];没有正确获得价值。我在这里想念什么?我已经更新了我的问题。谢谢! -
查询本身看起来不错。有没有办法可以在代码中显示问题以便我们看到它?由于我们看不到您的 UI,因此通常最好是您可以
console.log有问题的值(如serialNo),然后在问题中包含更新的代码及其输出。 -
我已经更新了我的代码先生。
标签: javascript firebase google-cloud-firestore pagination