เริ่มต้นใช้งาน Firestore Enterprise Edition โดยใช้ไลบรารีของไคลเอ็นต์เซิร์ฟเวอร์

คู่มือเริ่มต้นฉบับย่อนี้จะแสดงวิธีตั้งค่า Cloud Firestore เพิ่มข้อมูล จากนั้นใช้ การดำเนินการหลักหรือการดำเนินการไปป์ไลน์ เพื่อค้นหาข้อมูลที่คุณ เพิ่งเพิ่มใน Firebase คอนโซลโดยใช้ไลบรารีของไคลเอ็นต์เซิร์ฟเวอร์สำหรับ Java, Node.js และ Python

ใช้ไลบรารีของไคลเอ็นต์เหล่านี้เพื่อตั้งค่าสภาพแวดล้อมเซิร์ฟเวอร์ที่มีสิทธิ์เข้าถึงฐานข้อมูลของคุณได้อย่างเต็มที่

สร้างฐานข้อมูล Cloud Firestore

  1. หากยังไม่ได้สร้าง ให้สร้างโปรเจ็กต์ Firebase โดยคลิก Firebaseคอนโซล จากนั้นทำตามวิธีการบนหน้าจอเพื่อสร้างโปรเจ็กต์ Firebase หรือ เพิ่มบริการ Firebase ลงในโปรเจ็กต์Google Cloud ที่มีอยู่

  2. เปิดโปรเจ็กต์ในคอนโซล Firebase ในแผงด้านซ้าย ให้ขยาย Build แล้วเลือก ฐานข้อมูล Firestore

  3. คลิกสร้างฐานข้อมูล

  4. เลือกEnterprise สำหรับโหมดฐานข้อมูล

  5. เลือกFirestore ในโหมดดั้งเดิม สำหรับโหมดการดำเนินการ ซึ่งรองรับการดำเนินการหลักและการดำเนินการ Pipeline

  6. เลือกตำแหน่งสำหรับฐานข้อมูล

  7. เลือกโหมดเริ่มต้นสำหรับ Cloud Firestore Security Rules

    โหมดทดสอบ

    เหมาะสำหรับการเริ่มต้นใช้งานไลบรารีของไคลเอ็นต์อุปกรณ์เคลื่อนที่และเว็บ แต่จะอนุญาตให้ทุกคนอ่านและเขียนทับข้อมูลของคุณได้ หลังจากทดสอบแล้ว โปรด ตรวจสอบส่วน รักษาความปลอดภัยให้ข้อมูล

    หากต้องการเริ่มต้นใช้งาน SDK เว็บ, แพลตฟอร์ม Apple หรือ Android ให้เลือกโหมดทดสอบ

    โหมดโปรดักชัน

    ปฏิเสธการอ่านและการเขียนทั้งหมดจากไคลเอ็นต์อุปกรณ์เคลื่อนที่และเว็บ เซิร์ฟเวอร์แอปพลิเคชันที่ตรวจสอบสิทธิ์แล้ว (Node.js, Python, Java) จะยังคงเข้าถึงฐานข้อมูลของคุณได้

    ชุดกฎความปลอดภัยของ Cloud Firestore เริ่มต้นจะมีผลกับฐานข้อมูล Cloud Firestore เริ่มต้นCloud Firestore Security RulesCloud Firestore หากสร้างฐานข้อมูลหลายรายการสำหรับโปรเจ็กต์ คุณสามารถติดตั้งใช้งาน Cloud Firestore Security Rules สำหรับฐานข้อมูลแต่ละรายการได้

  8. คลิกสร้าง

เมื่อเปิดใช้ Cloud Firestore ระบบจะเปิดใช้ API ใน Cloud API Manager ด้วย

ตั้งค่าสภาพแวดล้อมในการพัฒนาซอฟต์แวร์

เพิ่มทรัพยากร Dependency และไลบรารีของไคลเอ็นต์ที่จำเป็นลงในแอป

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.8.0'
    • ใช้ Maven:
      <dependency>
        <groupId>com.google.firebase</groupId>
        <artifactId>firebase-admin</artifactId>
        <version>9.8.0</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 ในเซิร์ฟเวอร์ของคุณเอง ให้ใช้ บัญชีบริการ

    ไปที่ IAM และผู้ดูแลระบบ > บัญชีบริการ ในคอนโซล Google Cloud สร้างคีย์ส่วนตัวใหม่และบันทึกไฟล์ 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 ในเซิร์ฟเวอร์ของคุณเอง ให้ใช้ บัญชีบริการ

    ไปที่ IAM และผู้ดูแลระบบ > บัญชีบริการ ในคอนโซล Google Cloud สร้างคีย์ส่วนตัวใหม่และบันทึกไฟล์ 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

    ตอนนี้คุณสามารถเปรียบเทียบประสบการณ์การค้นหาไปป์ไลน์กับประสบการณ์การค้นหาหลักได้แล้ว

    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");
          }
        });

    ขั้นตอนถัดไป

    เพิ่มพูนความรู้เกี่ยวกับการดำเนินการหลักและการดำเนินการไปป์ไลน์ด้วยหัวข้อต่อไปนี้