尝试分页时,无法将类型([object Object])编码为Firestore Value错误

时间:2018-01-01 20:27:18

标签: firebase pagination google-cloud-functions google-cloud-firestore

所以我这里有我的代码

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行,它可以正常工作。

1 个答案:

答案 0 :(得分:0)

根据firebase文档,自定义类的对象不受支持,因此在某些语言(如PHP,C ++,Python和Node.js)中。

请参考。 https://firebase.google.com/docs/firestore/manage-data/add-data#custom_objects

因此,我建议您从Firebase下载对象时,将其编码为json并将其解码为自定义类。