为什么分页不起作用?

时间:2018-06-05 09:51:16

标签: javascript firebase google-cloud-firestore

以下是文档在集合中的显示方式:



const request = {
            carNum: carNum,
            userId: userId,
            comm: comm,
            location: location,
            data: new Date(),
            status: 'wait',
            geo: new firebase.firestore.GeoPoint(latitude, longitude),
        };




当我尝试更改查询的起点(startAfter)时。 Firebase每次都会向我发送相同的值。为什么呢?



let docRef = db.collection('requests').orderBy('data').startAfter(3).limit(3);
        try {
            let doc = await docRef.get()
            console.log(doc);
            console.log('Hello');
        } catch (e) {
            result = e;
        }




1 个答案:

答案 0 :(得分:1)

starAfter()参数的类型应与您在此节点上找到的数据类似。

换句话说,startAfter(3)的查询不会在您的集合中的第3个项目之后但在数据= 3的第一个文档之后开始。

您可以将数据存储为时间戳:

const request = {
            carNum: carNum,
            userId: userId,
            comm: comm,
            location: location,
            data: new Date().getTime(),   // <- get the Timestamp
            status: 'wait',
            geo: new firebase.firestore.GeoPoint(latitude, longitude),
        };

并使用时间戳查询:

let docRef = db.collection('requests').orderBy('data').startAfter(1528074000).limit(3)

但请注意,上述内容不是DocumentReference,而是CollectionReference。您必须循环收到的结果才能获取文档。