Начните работу с Cloud Firestore Enterprise Edition, используя серверные клиентские библиотеки.

В этом кратком руководстве показано, как настроить Cloud Firestore , добавить данные, а затем использовать либо основные операции, либо операции Pipeline для запроса только что добавленных данных в консоли Firebase с помощью клиентских библиотек для Java, Node.js и Python.

Используйте эти клиентские библиотеки для настройки привилегированных серверных сред с полным доступом к вашей базе данных.

Создайте базу данных Cloud Firestore

  1. Если вы еще этого не сделали, создайте проект Firebase: в консоли Firebase нажмите «Добавить проект» , а затем следуйте инструкциям на экране, чтобы создать проект Firebase или добавить сервисы Firebase в существующий проект Google Cloud .

  2. Откройте свой проект в консоли Firebase . В левой панели разверните раздел «Сборка» , а затем выберите базу данных Firestore .

  3. Нажмите «Создать базу данных» .

  4. Выберите режим базы данных «Предприятие» .

  5. Выберите режим работы Firestore in Native Mode , который поддерживает операции Core и Pipeline.

  6. Выберите местоположение для вашей базы данных.

  7. Выберите режим запуска Cloud Firestore Security Rules :

    Тестовый режим

    Подходит для начала работы с библиотеками мобильного и веб-клиента, но позволяет любому читать и перезаписывать ваши данные. После тестирования обязательно ознакомьтесь с разделом «Защита данных» .

    Для начала работы с веб-версией, платформами Apple или Android SDK выберите тестовый режим.

    Режим производства

    Запрещает все операции чтения и записи с мобильных и веб-клиентов. Ваши аутентифицированные серверы приложений (Node.js, Python, Java) по-прежнему смогут получать доступ к вашей базе данных.

    Первоначальный набор Cloud Firestore Security Rules будет применяться к вашей базе данных Cloud Firestore по умолчанию. Если вы создадите несколько баз данных для своего проекта, вы можете развернуть Cloud Firestore Security Rules для каждой из них.

  8. Нажмите «Создать» .

При включении Cloud Firestore также активируется API в Cloud API Manager .

Настройте среду разработки.

Добавьте необходимые зависимости и клиентские библиотеки в ваше приложение.

Node.js
  1. Добавьте Firebase Admin SDK в своё приложение:
    npm install firebase-admin --save
  2. Следуйте приведенным ниже инструкциям, чтобы инициализировать Cloud Firestore с использованием соответствующих учетных данных в вашей среде.
Python
  1. Добавьте Firebase Admin SDK в ваше приложение на Python:
    pip install --upgrade firebase-admin
  2. Следуйте приведенным ниже инструкциям, чтобы инициализировать Cloud Firestore с использованием соответствующих учетных данных в вашей среде.
Java
  1. Добавьте Firebase Admin SDK в своё приложение:
    • Использование Gradle:
      implementation 'com.google.firebase:firebase-admin:9.7.1'
    • Использование Maven:
      <dependency>
        <groupId>com.google.firebase</groupId>
        <artifactId>firebase-admin</artifactId>
        <version>9.7.1</version>
      </dependency>
           
  2. Следуйте приведенным ниже инструкциям, чтобы инициализировать Cloud Firestore с использованием соответствующих учетных данных в вашей среде.

Инициализация Cloud Firestore

Инициализируйте экземпляр Cloud Firestore :

Node.js
Инициализация Cloud Firestore SDK осуществляется различными способами в зависимости от вашей среды. Ниже приведены наиболее распространенные методы. Для получения полной информации см. раздел «Инициализация Admin SDK» .
  • Инициализация в Cloud Functions
    const { initializeApp, applicationDefault, cert } = require('firebase-admin/app');
    const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
    initializeApp();
    
    const db = getFirestore();
    
  • Инициализация в Google Cloud
    const { initializeApp, applicationDefault, cert } = require('firebase-admin/app');
    const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
    initializeApp({
      credential: applicationDefault()
    });
    
    const db = getFirestore();
  • Инициализируйте на собственном сервере.

    Чтобы использовать Firebase Admin SDK на собственном сервере (или в любой другой среде Node.js), используйте сервисную учетную запись . Перейдите в раздел IAM и администрирование > Сервисные учетные записи в консоли Google Cloud. Сгенерируйте новый закрытый ключ и сохраните JSON-файл. Затем используйте этот файл для инициализации SDK:

    const { initializeApp, applicationDefault, cert } = require('firebase-admin/app');
    const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
    const serviceAccount = require('./path/to/serviceAccountKey.json');
    
    initializeApp({
      credential: cert(serviceAccount)
    });
    
    const db = getFirestore();
    
Python
Инициализация Cloud Firestore SDK осуществляется различными способами в зависимости от вашей среды. Ниже приведены наиболее распространенные методы. Для получения полной информации см. раздел «Инициализация Admin SDK» .
  • Инициализация в Google Cloud
    import firebase_admin
    from firebase_admin import firestore
    
    # Application Default credentials are automatically created.
    app = firebase_admin.initialize_app()
    db = firestore.client()

    Для инициализации SDK также можно использовать существующие учетные данные приложения по умолчанию.

    import firebase_admin
    from firebase_admin import credentials
    from firebase_admin import firestore
    
    # Use the application default credentials.
    cred = credentials.ApplicationDefault()
    
    firebase_admin.initialize_app(cred)
    db = firestore.client()
  • Инициализируйте на собственном сервере.

    Для использования Firebase Admin SDK на собственном сервере используйте учетную запись службы .

    В консоли Google Cloud перейдите в раздел IAM и администрирование > Сервисные учетные записи . Сгенерируйте новый закрытый ключ и сохраните JSON-файл. Затем используйте этот файл для инициализации SDK:

    import firebase_admin
    from firebase_admin import credentials
    from firebase_admin import firestore
    
    # Use a service account.
    cred = credentials.Certificate('path/to/serviceAccount.json')
    
    app = firebase_admin.initialize_app(cred)
    
    db = firestore.client()
  • Java
    Инициализация Cloud Firestore SDK осуществляется различными способами в зависимости от вашей среды. Ниже приведены наиболее распространенные методы. Для получения полной информации см. раздел «Инициализация Admin SDK» .
  • Инициализация в Google Cloud
    import com.google.auth.oauth2.GoogleCredentials;
    import com.google.cloud.firestore.Firestore;
    
    import com.google.firebase.FirebaseApp;
    import com.google.firebase.FirebaseOptions;
    
    // Use the application default credentials
    GoogleCredentials credentials = GoogleCredentials.getApplicationDefault();
    FirebaseOptions options = new FirebaseOptions.Builder()
        .setCredentials(credentials)
        .setProjectId(projectId)
        .build();
    FirebaseApp.initializeApp(options);
    
    Firestore db = FirestoreClient.getFirestore();
  • Инициализируйте на собственном сервере.

    Для использования Firebase Admin SDK на собственном сервере используйте учетную запись службы .

    В консоли Google Cloud перейдите в раздел IAM и администрирование > Сервисные учетные записи . Сгенерируйте новый закрытый ключ и сохраните JSON-файл. Затем используйте этот файл для инициализации SDK:

    import com.google.auth.oauth2.GoogleCredentials;
    import com.google.cloud.firestore.Firestore;
    
    import com.google.firebase.FirebaseApp;
    import com.google.firebase.FirebaseOptions;
    
    // Use a service account
    InputStream serviceAccount = new FileInputStream("path/to/serviceAccount.json");
    GoogleCredentials credentials = GoogleCredentials.fromStream(serviceAccount);
    FirebaseOptions options = new FirebaseOptions.Builder()
        .setCredentials(credentials)
        .build();
    FirebaseApp.initializeApp(options);
    
    Firestore db = FirestoreClient.getFirestore();
  • Добавление данных с использованием основных операций.

    Чтобы изучить основные операции и операции конвейера для запроса данных, добавьте данные в свою базу данных, используя основные операции.

    Cloud Firestore хранит данные в документах, которые хранятся в коллекциях. Cloud Firestore создает коллекции и документы автоматически при первом добавлении данных в документ. Вам не нужно явно создавать коллекции или документы.

    Создайте новую коллекцию и документ, используя следующий пример кода.

    Node.js
    const docRef = db.collection('users').doc('alovelace');
    
    await docRef.set({
      first: 'Ada',
      last: 'Lovelace',
      born: 1815
    });
    Java
    DocumentReference docRef = db.collection("users").document("alovelace");
    // Add document data  with id "alovelace" using a hashmap
    Map<String, Object> data = new HashMap<>();
    data.put("first", "Ada");
    data.put("last", "Lovelace");
    data.put("born", 1815);
    //asynchronously write data
    ApiFuture<WriteResult> result = docRef.set(data);
    // ...
    // result.get() blocks on response
    System.out.println("Update time : " + result.get().getUpdateTime());
    Python
    doc_ref = db.collection("users").document("alovelace")
    doc_ref.set({"first": "Ada", "last": "Lovelace", "born": 1815})

    Чтение данных с использованием основных операций.

    Воспользуйтесь средством просмотра данных в консоли Firebase , чтобы быстро убедиться, что вы добавили данные в Cloud Firestore .

    Также можно использовать метод `get` для получения всей коллекции целиком.

    Node.js
    const snapshot = await db.collection('users').get();
    snapshot.forEach((doc) => {
      console.log(doc.id, '=>', doc.data());
    });
    Python
    users_ref = db.collection("users")
    docs = users_ref.stream()
    
    for doc in docs:
        print(f"{doc.id} => {doc.to_dict()}")
    Java
    // asynchronously retrieve all users
    ApiFuture<QuerySnapshot> query = db.collection("users").get();
    // ...
    // query.get() blocks on response
    QuerySnapshot querySnapshot = query.get();
    List<QueryDocumentSnapshot> documents = querySnapshot.getDocuments();
    for (QueryDocumentSnapshot document : documents) {
      System.out.println("User: " + document.getId());
      System.out.println("First: " + document.getString("first"));
      if (document.contains("middle")) {
        System.out.println("Middle: " + document.getString("middle"));
      }
      System.out.println("Last: " + document.getString("last"));
      System.out.println("Born: " + document.getLong("born"));
    }

    Чтение данных с использованием операций конвейера.

    Теперь вы можете сравнить удобство выполнения запросов в Pipeline с удобством выполнения запросов в Core.

    Node.js
    const readDataPipeline = db.pipeline()
      .collection("users");
    
    // Execute the pipeline and handle the result
    try {
      const querySnapshot = await readDataPipeline.execute();
      querySnapshot.results.forEach((result) => {
        console.log(`${result.id} => ${result.data()}`);
      });
    } catch (error) {
        console.error("Error getting documents: ", error);
    }
    Python
    pipeline = client.pipeline().collection("users")
    for result in pipeline.execute():
        print(f"{result.id} => {result.data()}")
    Java
    Pipeline pipeline = firestore.pipeline().collection("users");
    ApiFuture<Pipeline.Snapshot> future = pipeline.execute();
    for (com.google.cloud.firestore.PipelineResult result : future.get().getResults()) {
      System.out.println(result.getId() + " => " + result.getData());
    }
    // or, asynchronously
    pipeline.execute(
        new ApiStreamObserver<com.google.cloud.firestore.PipelineResult>() {
          @Override
          public void onNext(com.google.cloud.firestore.PipelineResult result) {
            System.out.println(result.getId() + " => " + result.getData());
          }
    
          @Override
          public void onError(Throwable t) {
            System.err.println(t);
          }
    
          @Override
          public void onCompleted() {
            System.out.println("done");
          }
        });

    Следующие шаги

    Углубите свои знания в области основных и трубопроводных операций, изучив следующие темы:

    ,

    В этом кратком руководстве показано, как настроить Cloud Firestore , добавить данные, а затем использовать либо основные операции, либо операции Pipeline для запроса только что добавленных данных в консоли Firebase с помощью клиентских библиотек для Java, Node.js и Python.

    Используйте эти клиентские библиотеки для настройки привилегированных серверных сред с полным доступом к вашей базе данных.

    Создайте базу данных Cloud Firestore

    1. Если вы еще этого не сделали, создайте проект Firebase: в консоли Firebase нажмите «Добавить проект» , а затем следуйте инструкциям на экране, чтобы создать проект Firebase или добавить сервисы Firebase в существующий проект Google Cloud .

    2. Откройте свой проект в консоли Firebase . В левой панели разверните раздел «Сборка» , а затем выберите базу данных Firestore .

    3. Нажмите «Создать базу данных» .

    4. Выберите режим базы данных «Предприятие» .

    5. Выберите режим работы Firestore in Native Mode , который поддерживает операции Core и Pipeline.

    6. Выберите местоположение для вашей базы данных.

    7. Выберите режим запуска Cloud Firestore Security Rules :

      Тестовый режим

      Подходит для начала работы с библиотеками мобильного и веб-клиента, но позволяет любому читать и перезаписывать ваши данные. После тестирования обязательно ознакомьтесь с разделом «Защита данных» .

      Для начала работы с веб-версией, платформами Apple или Android SDK выберите тестовый режим.

      Режим производства

      Запрещает все операции чтения и записи с мобильных и веб-клиентов. Ваши аутентифицированные серверы приложений (Node.js, Python, Java) по-прежнему смогут получать доступ к вашей базе данных.

      Первоначальный набор Cloud Firestore Security Rules будет применяться к вашей базе данных Cloud Firestore по умолчанию. Если вы создадите несколько баз данных для своего проекта, вы можете развернуть Cloud Firestore Security Rules для каждой из них.

    8. Нажмите «Создать» .

    При включении Cloud Firestore также активируется API в Cloud API Manager .

    Настройте среду разработки.

    Добавьте необходимые зависимости и клиентские библиотеки в ваше приложение.

    Node.js
    1. Добавьте Firebase Admin SDK в своё приложение:
      npm install firebase-admin --save
    2. Следуйте приведенным ниже инструкциям, чтобы инициализировать Cloud Firestore с использованием соответствующих учетных данных в вашей среде.
    Python
    1. Добавьте Firebase Admin SDK в ваше приложение на Python:
      pip install --upgrade firebase-admin
    2. Следуйте приведенным ниже инструкциям, чтобы инициализировать Cloud Firestore с использованием соответствующих учетных данных в вашей среде.
    Java
    1. Добавьте Firebase Admin SDK в своё приложение:
      • Использование Gradle:
        implementation 'com.google.firebase:firebase-admin:9.7.1'
      • Использование Maven:
        <dependency>
          <groupId>com.google.firebase</groupId>
          <artifactId>firebase-admin</artifactId>
          <version>9.7.1</version>
        </dependency>
             
    2. Следуйте приведенным ниже инструкциям, чтобы инициализировать Cloud Firestore с использованием соответствующих учетных данных в вашей среде.

    Инициализация Cloud Firestore

    Инициализируйте экземпляр Cloud Firestore :

    Node.js
    Инициализация Cloud Firestore SDK осуществляется различными способами в зависимости от вашей среды. Ниже приведены наиболее распространенные методы. Для получения полной информации см. раздел «Инициализация Admin SDK» .
    • Инициализация в Cloud Functions
      const { initializeApp, applicationDefault, cert } = require('firebase-admin/app');
      const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
      initializeApp();
      
      const db = getFirestore();
      
    • Инициализация в Google Cloud
      const { initializeApp, applicationDefault, cert } = require('firebase-admin/app');
      const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
      initializeApp({
        credential: applicationDefault()
      });
      
      const db = getFirestore();
    • Инициализируйте на собственном сервере.

      Чтобы использовать Firebase Admin SDK на собственном сервере (или в любой другой среде Node.js), используйте сервисную учетную запись . Перейдите в раздел IAM и администрирование > Сервисные учетные записи в консоли Google Cloud. Сгенерируйте новый закрытый ключ и сохраните JSON-файл. Затем используйте этот файл для инициализации SDK:

      const { initializeApp, applicationDefault, cert } = require('firebase-admin/app');
      const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
      const serviceAccount = require('./path/to/serviceAccountKey.json');
      
      initializeApp({
        credential: cert(serviceAccount)
      });
      
      const db = getFirestore();
      
    Python
    Инициализация Cloud Firestore SDK осуществляется различными способами в зависимости от вашей среды. Ниже приведены наиболее распространенные методы. Для получения полной информации см. раздел «Инициализация Admin SDK» .
  • Инициализация в Google Cloud
    import firebase_admin
    from firebase_admin import firestore
    
    # Application Default credentials are automatically created.
    app = firebase_admin.initialize_app()
    db = firestore.client()

    Для инициализации SDK также можно использовать существующие учетные данные приложения по умолчанию.

    import firebase_admin
    from firebase_admin import credentials
    from firebase_admin import firestore
    
    # Use the application default credentials.
    cred = credentials.ApplicationDefault()
    
    firebase_admin.initialize_app(cred)
    db = firestore.client()
  • Инициализируйте на собственном сервере.

    Для использования Firebase Admin SDK на собственном сервере используйте учетную запись службы .

    В консоли Google Cloud перейдите в раздел IAM и администрирование > Сервисные учетные записи . Сгенерируйте новый закрытый ключ и сохраните JSON-файл. Затем используйте этот файл для инициализации SDK:

    import firebase_admin
    from firebase_admin import credentials
    from firebase_admin import firestore
    
    # Use a service account.
    cred = credentials.Certificate('path/to/serviceAccount.json')
    
    app = firebase_admin.initialize_app(cred)
    
    db = firestore.client()
  • Java
    Инициализация Cloud Firestore SDK осуществляется различными способами в зависимости от вашей среды. Ниже приведены наиболее распространенные методы. Для получения полной информации см. раздел «Инициализация Admin SDK» .
  • Инициализация в Google Cloud
    import com.google.auth.oauth2.GoogleCredentials;
    import com.google.cloud.firestore.Firestore;
    
    import com.google.firebase.FirebaseApp;
    import com.google.firebase.FirebaseOptions;
    
    // Use the application default credentials
    GoogleCredentials credentials = GoogleCredentials.getApplicationDefault();
    FirebaseOptions options = new FirebaseOptions.Builder()
        .setCredentials(credentials)
        .setProjectId(projectId)
        .build();
    FirebaseApp.initializeApp(options);
    
    Firestore db = FirestoreClient.getFirestore();
  • Инициализируйте на собственном сервере.

    Для использования Firebase Admin SDK на собственном сервере используйте учетную запись службы .

    В консоли Google Cloud перейдите в раздел IAM и администрирование > Сервисные учетные записи . Сгенерируйте новый закрытый ключ и сохраните JSON-файл. Затем используйте этот файл для инициализации SDK:

    import com.google.auth.oauth2.GoogleCredentials;
    import com.google.cloud.firestore.Firestore;
    
    import com.google.firebase.FirebaseApp;
    import com.google.firebase.FirebaseOptions;
    
    // Use a service account
    InputStream serviceAccount = new FileInputStream("path/to/serviceAccount.json");
    GoogleCredentials credentials = GoogleCredentials.fromStream(serviceAccount);
    FirebaseOptions options = new FirebaseOptions.Builder()
        .setCredentials(credentials)
        .build();
    FirebaseApp.initializeApp(options);
    
    Firestore db = FirestoreClient.getFirestore();
  • Добавление данных с использованием основных операций.

    Чтобы изучить основные операции и операции конвейера для запроса данных, добавьте данные в свою базу данных, используя основные операции.

    Cloud Firestore хранит данные в документах, которые хранятся в коллекциях. Cloud Firestore создает коллекции и документы автоматически при первом добавлении данных в документ. Вам не нужно создавать коллекции или документы явным образом.

    Создайте новую коллекцию и документ, используя следующий пример кода.

    Node.js
    const docRef = db.collection('users').doc('alovelace');
    
    await docRef.set({
      first: 'Ada',
      last: 'Lovelace',
      born: 1815
    });
    Java
    DocumentReference docRef = db.collection("users").document("alovelace");
    // Add document data  with id "alovelace" using a hashmap
    Map<String, Object> data = new HashMap<>();
    data.put("first", "Ada");
    data.put("last", "Lovelace");
    data.put("born", 1815);
    //asynchronously write data
    ApiFuture<WriteResult> result = docRef.set(data);
    // ...
    // result.get() blocks on response
    System.out.println("Update time : " + result.get().getUpdateTime());
    Python
    doc_ref = db.collection("users").document("alovelace")
    doc_ref.set({"first": "Ada", "last": "Lovelace", "born": 1815})

    Чтение данных с использованием основных операций.

    Воспользуйтесь средством просмотра данных в консоли Firebase , чтобы быстро убедиться, что вы добавили данные в Cloud Firestore .

    Также можно использовать метод `get` для получения всей коллекции целиком.

    Node.js
    const snapshot = await db.collection('users').get();
    snapshot.forEach((doc) => {
      console.log(doc.id, '=>', doc.data());
    });
    Python
    users_ref = db.collection("users")
    docs = users_ref.stream()
    
    for doc in docs:
        print(f"{doc.id} => {doc.to_dict()}")
    Java
    // asynchronously retrieve all users
    ApiFuture<QuerySnapshot> query = db.collection("users").get();
    // ...
    // query.get() blocks on response
    QuerySnapshot querySnapshot = query.get();
    List<QueryDocumentSnapshot> documents = querySnapshot.getDocuments();
    for (QueryDocumentSnapshot document : documents) {
      System.out.println("User: " + document.getId());
      System.out.println("First: " + document.getString("first"));
      if (document.contains("middle")) {
        System.out.println("Middle: " + document.getString("middle"));
      }
      System.out.println("Last: " + document.getString("last"));
      System.out.println("Born: " + document.getLong("born"));
    }

    Чтение данных с использованием операций конвейера.

    Теперь вы можете сравнить удобство выполнения запросов в Pipeline с удобством выполнения запросов в Core.

    Node.js
    const readDataPipeline = db.pipeline()
      .collection("users");
    
    // Execute the pipeline and handle the result
    try {
      const querySnapshot = await readDataPipeline.execute();
      querySnapshot.results.forEach((result) => {
        console.log(`${result.id} => ${result.data()}`);
      });
    } catch (error) {
        console.error("Error getting documents: ", error);
    }
    Python
    pipeline = client.pipeline().collection("users")
    for result in pipeline.execute():
        print(f"{result.id} => {result.data()}")
    Java
    Pipeline pipeline = firestore.pipeline().collection("users");
    ApiFuture<Pipeline.Snapshot> future = pipeline.execute();
    for (com.google.cloud.firestore.PipelineResult result : future.get().getResults()) {
      System.out.println(result.getId() + " => " + result.getData());
    }
    // or, asynchronously
    pipeline.execute(
        new ApiStreamObserver<com.google.cloud.firestore.PipelineResult>() {
          @Override
          public void onNext(com.google.cloud.firestore.PipelineResult result) {
            System.out.println(result.getId() + " => " + result.getData());
          }
    
          @Override
          public void onError(Throwable t) {
            System.err.println(t);
          }
    
          @Override
          public void onCompleted() {
            System.out.println("done");
          }
        });

    Следующие шаги

    Углубите свои знания в области основных и трубопроводных операций, изучив следующие темы: