以下是文档在集合中的显示方式:
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;
}

答案 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。您必须循环收到的结果才能获取文档。