Проблема
Я создаю веб-сайт для мобильного приложения, приложение A. Я использую Firebase для размещения своего веб-сайта.Веб-сайт связан с тем же проектом Firebase, что и приложение A. Другое мобильное приложение, которое я уже разработал, App B, имеет базу данных FireStore, которую я хочу использовать в качестве источника данных «новостей» для веб-сайта приложения A.База данных приложения B находится в другом проекте Firebase, чем веб-сайт приложения A. Я не могу соединить соединение между веб-сайтом приложения A и базой данных приложения B.
AC
Используя Firebase, успешно выполнить запросданные из базы данных приложения B с веб-сайта приложения A.
Используйте переменные конфигурации среды firebase для хранения личных учетных данных базы данных приложения B.
Настройка
Режим разработчика включен в базе данных приложения B (разрешить все).
Файл запуска веб-приложения A ...
functions = require("firebase-functions");
const firebase = require("firebase-admin");
downloadNews = require("./db/news/downloadLatestNews");
transporter = require("./middleware/transport");
const appA = firebase.initializeApp();
appADatabase = appA.firestore();
appADatabase.settings({timestampsInSnapshots:true});
const appB = firebase.initializeApp({
credential: firebase.credential.cert({
projectId: functions.config().appB.project_id,
clientEmail: functions.config().appB.client_email,
privateKey: functions.config().appB.private_key.replace(/\\n/g, '\n')
}),
databaseURL: functions.config().appB.database_url
}, "AppB");
appBDatabase = firebase.firestore(appB);
appBDatabase.settings({timestampsInSnapshots:true});
Модуль внутри Web App A для запроса из базы данных App B ...
Эта функция вызывается каждый раз, когда пользователь отправляет запрос на маршрут / news в Web App A.
const Post = require("../../models/post");
exports.downloadRecent = function() {
var ref = appBDatabase.collection("users").doc(functions.config().appB.user_id).collection("post_storage");
ref = ref.where('is_public', '==', true);
ref = ref.limit(16);
console.log(ref);
return ref.get().then(snapshot => {
if (!snapshot.exists) {
console.log("No documents exist for userID: " + functions.config().appB.user_id);
// Gonna pass back a generic check again soon
return null;
}
const docs = snapshot.docs;
// Empty array of post prms to return
console.log("The snapshot returned: " + docs);
var all_prms = [];
// Create each doc as a post
docs.forEach(doc => {
var post = new Post(doc.data());
console.info("Post data: " + doc.data());
all_prms.push(post);
});
return Promise.all(all_prms);
})
.catch(err => {
console.log("Error getting posts: " + err);
return;
});
};
Результаты
Каждая попытка запроса данных из базы данных приложения B не возвращает никаких документов.Я могу проверить, существуют ли документы и соответствуют ли они критериям для запроса.
Буду очень признателен за любые советы о том, что я могу делать неправильно.В заключение я должен сказать, что я не веб-разработчик и у меня мало опыта.