Преобразование ссылки на документ Firestore в данные JSON в TypeScript - PullRequest
0 голосов
/ 05 марта 2020

У меня есть коллекция документов пожарного магазина, которые содержат массив ссылочных объектов, ссылающихся на документы, найденные в другой коллекции пожарного магазина. Когда я пытаюсь получить документ и преобразовать его в данные JSON, я получаю сообщение об ошибке: «Ошибка типа: преобразование круговой структуры в JSON». Проблема, кажется, с типом ссылки пожарного магазина? Я новичок в машинописи и не уверен, в чем проблема, поскольку все работает, когда я исключаю массив ссылок. (Также ссылки на самом деле не являются круговыми, они ссылаются на совершенно разные документы, которые не связаны между собой)

Вот код, используемый для получения документа

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")
    });
});

1 Ответ

1 голос
/ 05 марта 2020

Вам потребуется обработать этот data объект, чтобы удалить или преобразовать ссылки на документы, прежде чем передавать его в send(). DocumentReference объекты имеют внутреннюю структуру, которая не может быть эффективно (или эффективно) сериализована. Вместо этого рассмотрим просто сериализацию строки, которая может быть использована для восстановления ссылки на клиенте. Я предлагаю просто использовать для этого path свойство строки. На стороне клиента вы можете передать эту строку firestore.document() или firestore.doc(), чтобы снова создать локальный объект DocumentReference.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...