Приведенный ниже код работает, как ожидается, в нашем проекте Firebase, но не даст никаких результатов в нашем производственном проекте. Функции, триггеры, структуры документов, индексы кажутся идентичными для обоих проектов. Мы должны упустить что-то маленькое.
Запрос Firestore, который имеет проблему с загрузкой всех существующих документов в под-коллекции "module2Attempts", находится здесь:
admin.firestore().collection("users").doc("jcGP0aE2RSf0f0vmR15LGa6QNIu1").collection("module2Attempts")
.get()
.then(function (docs) {
if (docs.empty) {
console.log("No docs found from query.");
return [];
}
let prevAttempts = [];
docs.docs.forEach(function (doc) {
// doc.data() is never undefined for query doc snapshots
prevAttempts.push(doc.data());
});
console.log(prevAttempts.length+" attempts found!");
return prevAttempts;
})
.catch(function (error) {
console.error("Error loading module 2 attempt docs: ", error);
});
}
Мы подтвердили data.uid не нулевое или неопределенное, и существует несколько документов по пути сбора, определенному запросом.
functions / index. js
'use strict';
const functions = require('firebase-functions');
const admin = require('firebase-admin');
const prodServiceAccount = require("./prodServiceAccountKey.json");
const devServiceAccount = require("./devServiceAccountKey.json");
const config = process.env.REACT_APP_STAGE === "prod" ?
{
credential: admin.credential.cert(prodServiceAccount),
databaseURL: "https://...."
} :
{
credential: admin.credential.cert(devServiceAccount),
databaseURL: "https://..."
};
admin.initializeApp(config);
const onCreateModule2Attempt = require('./Modules/onCreateModule2Attempt.js');
// Listen for new module2Attempt docs created
module.exports.createModule2Attempt = functions.firestore
.document('users/{userId}/module2Attempts/{attemptId}')
.onCreate(onCreateModule2Attempt.handler);
onCreateModule2Attempt. js
const admin = require('firebase-admin');
exports.handler = async (snap, context) => {
const data = snap.data();
console.log("This log is just a test balloon")
console.log("New Module 2 Attempt for ", data.email);
admin.firestore().collection("users").doc("jcGP0aE2RSf0f0vmR15LGa6QNIu1").collection("module2Attempts")
.get()
.then(function (docs) {
if (docs.empty) {
console.log("No docs found from query.");
return [];
}
let prevAttempts = [];
docs.docs.forEach(function (doc) {
// doc.data() is never undefined for query doc snapshots
prevAttempts.push(doc.data());
});
console.log(prevAttempts.length+" attempts found!");
return prevAttempts;
})
.catch(function (error) {
console.error("Error loading module 2 attempt docs: ", error);
});
}