将 Firestore 文档引用转换为 TypeScript 中的 JSON 数据

Ale*_*ton 5 firebase typescript google-cloud-firestore

我有一个 firestore 文档集合,其中包含一组引用对象,引用另一个 firestore 集合中找到的文档。当我尝试获取文档并将其转换为 JSON 数据时,我收到错误:“TypeError:将循环结构转换为 JSON”。问题似乎与 firestore 引用的类型有关?我是打字稿新手,不确定问题是什么,因为当我排除引用数组时一切正常。(而且这些参考文献实际上并不是循环的,它们引用了完全独立的、不相关的文档)

这是用于获取文档的代码

interface PlaylistData {
    name: String
    description: String
    coverImage: String
    tracks: [FirebaseFirestore.DocumentReference]
} 

export const getPlaylist = functions.https.onRequest((request, response) => {
    admin.firestore().collection("playlists")
    .doc('test').get()
    .then(function (snapshot){
        let data = <PlaylistData>snapshot.data()
        console.log(data)
        response.send(data)
    })
    .catch(error => { 
        console.log(error)
        response.status(500).send("ERROR")
    });
});
Run Code Online (Sandbox Code Playgroud)

Dou*_*son 4

您必须先处理该data对象以删除或转换文档引用,然后再将其传递给send(). DocumentReference对象具有无法有效(或高效)序列化的内部结构。请考虑仅序列化可用于在客户端上重建引用的字符串。我建议简单地使用它的path字符串属性。在客户端,您可以将该字符串传递给firestore.document()firestore.doc()再次构建本地 DocumentReference 对象。