Kembalikan dokumen dalam snapshot kueri sebagai json string firestore

Saya memiliki pertanyaan yang dibuat di node to firestore untuk mendapatkan koleksi dokumen. Saya ingin menulis koleksi sebagai string json untuk diuraikan oleh suatu aplikasi. Kode saya adalah sebagai berikut:

serverRef = db.collection('servers');
        getDocs = serverRef.where('online', '==', true).get()
        .then(querySnapshot => {
            if (querySnapshot.empty) {
                res.send("NO SERVERS AVAILABLE");
            } else {
                var docs = querySnapshot.docs;
                console.log('Document data:', docs);
                res.end(JSON.stringify({kind: 'freeforge#PublicServerSearchResponse',servers: docs}));
            }

Saya mendapatkan data yang tidak perlu dengan cara ini karena yang saya dapatkan hanyalah cuplikan dokumen. Bagaimana cara saya mengulang snapshot dokumen dan mengirimkannya dalam satu string json?


person Sammi3    schedule 25.12.2018    source sumber


Jawaban (2)


Kelas QuerySnapshot dan Document bukanlah tipe JSON sederhana. Jika Anda ingin mengontrol apa yang tertulis, Anda harus mengulang querySnapshot (dengan map atau forEach) dan mengekstrak sendiri data JSON.

Salah satu contoh yang mungkin:

serverRef = db.collection('servers');
getDocs = serverRef.where('online', '==', true).get()
.then(querySnapshot => {
    if (querySnapshot.empty) {
        res.send("NO SERVERS AVAILABLE");
    } else {
        var docs = querySnapshot.docs.map(doc => doc.data());
        console.log('Document data:', docs);
        res.end(JSON.stringify({kind: 'freeforge#PublicServerSearchResponse', servers: docs}));
    }
});
person Frank van Puffelen    schedule 26.12.2018

Siapa pun yang mencari jawaban flutter adalah ini,

    serverRef = db.collection('servers');
    getDocs = serverRef.where('online', '==', true).get()
     .then(querySnapshot => {
       if (querySnapshot.empty) {
          res.send("NO SERVERS AVAILABLE");
          } else {
         var docs = 
         querySnapshot.docs.map(json.decode(json.encode(doc.data())));
       }
     });
person Saurabh Patwal    schedule 17.05.2021