Firebase.firestore против admin.firestore

#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. Для запуска в браузере — да, вот почему мой ответ гласит.