#firebase #google-cloud-platform #google-cloud-firestore
#firebase #google-cloud-platform #google-cloud-firestore
Вопрос:
Я изучаю GCP, и в их Firestore меня смущает разница между Admin.firestore и Firebase.firestore.
это код для администратора:
const admin = require("firebase-admin");
admin.initializeApp({
credential: admin.credential.applicationDefault(),
databaseURL: "https://<firestoreprojectnameurl>"
const db = admin.firestore();
});
хотя это код для firestore
const { config } = require('./config');
const firebase = require("firebase");
firebase.initializeApp(config);
const db = firebase.firestore();
Пожалуйста, обратите внимание, что одновременно будет работать только 1 дб, и для моей текущей настройки я использую db = firebase.firestore()
хотя, если я изменю его на db = admin.firestore
, ite будет работать нормально, и весь мой код будет работать одинаково.
Заранее благодарю вас!
Ответ №1:
JavaScript SDK для веб-клиентов (ваш второй пример) отличается от JavaScript SDK для серверных систем nodejs (ваш первый пример). У них разные API, хотя они могут показаться очень похожими для большинства типов запросов. Но они определенно не взаимозаменяемы. Вы должны выбрать ту, которая соответствует среде, в которой она будет использоваться. Пакет Firebase Admin SDK определенно нельзя использовать в веб-клиентах, хотя пакет веб-клиента SDK может работать в серверных средах nodejs (но я не рекомендую его).
Также может быть полезно знать, что Firebase Admin SDK на самом деле является просто оболочкой вокруг Google Cloud nodejs SDK. Вы можете сравнить документацию API web SDK с nodejs SDK, если хотите взглянуть поближе.
Комментарии:
1. Если я правильно понял ваш ответ, и, пожалуйста, поправьте меня, если я ошибаюсь, я должен использовать второй код, если я должен был развернуть код в функциях Google, которые будут запускаться от имени конечных пользователей?
2. Вы определенно захотите использовать Admin SDK для облачных функций. Это то, что вы видите во всех официальных образцах.
3. Спасибо! и использовать второй код для клиентских скриптов? верно?
4. Для запуска в браузере — да, вот почему мой ответ гласит.