FireStore не работает с облачными функциями

# #node.js #google-cloud-firestore #google-cloud-functions

Вопрос:

Я попытался распечатать все данные в своей users коллекции firestore. Но всегда он возвращает {} это.

 exports.trial = functions.https.onRequest( (request, response) => {
    // var db = admin.firestore();
    admin.firestore().collection("/users").get().then( snapshot => {
        response.send(snapshot);
    }).catch(error => {
        response.send(error);
    });
} );
 

Я пытался сделать чтение и запись общедоступными, но ничего не работает. Может быть, я что-то упускаю. Я запускаю функции локально.

Комментарии:

1. Какую ошибку/неожиданное поведение вы видите?

2. admin.firestore().collection("users")

3. @MartinZeitler эта печать {"_query":{"_firestore":{"projectId":"project-trial"},"_queryOptions":{"parentPath":{"segments":[]},"collectionId":"users","converter":{},"allDescendants":false,"fieldFilters":[],"fieldOrders":[],"kindless":false,"requireConsistency":true},"_serializer":{"allowUndefined":false},"_allowUndefined":false},"_readTime":{"_seconds":1628512388,"_nanoseconds":351959000},"_size":1,"_materializedDocs":null,"_materializedChanges":null}

4. @LuizFerraz Я не получил никакой ошибки. Но всегда это дает пустой json. {} .

Ответ №1:

Ваша snapshot переменная-это QuerySnapshot объект, который не является допустимым объектом JSON. Вероятно, вы хотите отправить документы, содержащиеся в снимке, обратно, что вы можете сделать с помощью:

 response.send(snapshot.docs.map((doc) => doc.data()))
 

Комментарии:

1. Спасибо @theTerribleSWE за предложение использовать map для возврата только данные из каждого документа.