所以我这里有我的代码
notifull.get('/getNote', (request, response) => {
// START Get variables
var requestData = {
// location properties
subject: request.query.subject,
category: request.query.category,
subcategory: request.query.subcategory,
// easy way to get full reference string
referenceString: function() {
return `${this.subject}/${this.category}/${this.subcategory}`;
},
// pagination properties
pagePosition: Number(request.query.pagePosition),
// easy way to get limit number
paginationNumber: function() {
return (this.pagePosition - 1) * 2;
}
};
// DEBUG_PURPOSES response.send(requestData.referenceString());
// END Get variables
// START Construct index
var first = admin.firestore().collection(requestData.referenceString())
.orderBy("upvotes")
.limit(requestData.paginationNumber());
// DEBUG_PURPOSES response.send(first)
// END Construct index
// START Paginate
return first.get().then(function (documentSnapshots) {
// Get the last visible document
var lastVisible = documentSnapshots.docs[documentSnapshots.docs.length-1];
console.log("last", lastVisible);
// Construct a new query starting at this document,
// get the next 25 cities.
var next = admin.firestore().collection(requestData.referenceString())
.orderBy("upvotes")
.startAfter(lastVisible)
.limit(2);
response.send(next)
});
});
正如您所看到的,我正在尝试使用Cloud Firestore进行Paginate。如果您注意到,我已将代码分为几个部分,之前的测试显示构造索引和获取变量部分工作。但是,当我从Firebase自己的文档中提取Paginate示例,将其调整为我的代码,然后尝试运行时,我遇到了此错误。
Cannot encode type ([object Object]) to a Firestore Value
更新:经过更多测试后,似乎如果我删除了startAfter行,它可以正常工作。
答案 0 :(得分:0)
根据firebase文档,自定义类的对象不受支持,因此在某些语言(如PHP,C ++,Python和Node.js)中。
请参考。 https://firebase.google.com/docs/firestore/manage-data/add-data#custom_objects
因此,我建议您从Firebase下载对象时,将其编码为json并将其解码为自定义类。