การเริ่มต้นอย่างรวดเร็วนี้จะแสดงวิธีตั้งค่า Cloud Firestore เพิ่มข้อมูล จากนั้นดูข้อมูลที่คุณเพิ่งเพิ่มในคอนโซล Firebase
สร้างฐานข้อมูล Cloud Firestore
หากคุณยังไม่ได้สร้าง ให้สร้างโปรเจ็กต์ Firebase: ใน คอนโซล Firebase ให้คลิก เพิ่มโปรเจ็ กต์ จากนั้นทำตามคำแนะนำบนหน้าจอเพื่อสร้างโปรเจ็กต์ Firebase หรือเพิ่มบริการ Firebase ให้กับโปรเจ็กต์ GCP ที่มีอยู่
ไปที่ส่วน Cloud Firestore ของ คอนโซล Firebase คุณจะได้รับแจ้งให้เลือกโปรเจ็กต์ Firebase ที่มีอยู่ ทำตามเวิร์กโฟลว์การสร้างฐานข้อมูล
เลือกโหมดเริ่มต้นสำหรับกฎความปลอดภัยของ Cloud Firestore:
- โหมดทดสอบ
เหมาะสำหรับการเริ่มต้นใช้งานไลบรารีของไคลเอ็นต์บนมือถือและเว็บไคลเอ็นต์ แต่ให้ทุกคนสามารถอ่านและเขียนทับข้อมูลของคุณได้ หลังจากการทดสอบ อย่าลืมตรวจสอบส่วนการ รักษาความปลอดภัยข้อมูลของคุณ
ในการเริ่มต้นใช้งานเว็บ แพลตฟอร์ม Apple หรือ Android SDK ให้เลือกโหมดทดสอบ
- โหมดล็อค
ปฏิเสธการอ่านและเขียนทั้งหมดจากไคลเอนต์มือถือและเว็บ แอปพลิเคชันเซิร์ฟเวอร์ที่ตรวจสอบสิทธิ์ของคุณ (C#, Go, Java, Node.js, PHP, Python หรือ Ruby) ยังคงเข้าถึงฐานข้อมูลของคุณได้
ในการเริ่มต้นใช้งานไลบรารีไคลเอ็นต์เซิร์ฟเวอร์ C#, Go, Java, Node.js, PHP, Python หรือ Ruby ให้เลือกโหมดล็อก
เลือก ตำแหน่ง สำหรับฐานข้อมูลของคุณ
การตั้งค่าตำแหน่งนี้คือ ตำแหน่งทรัพยากร Google Cloud Platform (GCP) เริ่มต้น ของโปรเจ็กต์ของคุณ โปรดทราบว่าตำแหน่งนี้จะใช้สำหรับบริการ GCP ในโปรเจ็กต์ของคุณที่ต้องมีการตั้งค่าตำแหน่ง โดยเฉพาะอย่างยิ่ง บัคเก็ต Cloud Storage เริ่มต้นและ แอป App Engine ของคุณ (ซึ่งจำเป็นหากคุณใช้ Cloud Scheduler)
หากคุณเลือกสถานที่ไม่ได้ แสดงว่าโปรเจ็กต์ของคุณมีตำแหน่งทรัพยากร GCP เริ่มต้นอยู่แล้ว มันถูกตั้งค่าระหว่างการสร้างโครงการหรือเมื่อตั้งค่าบริการอื่นที่ต้องมีการตั้งค่าตำแหน่ง
คลิก เสร็จสิ้น
เมื่อคุณเปิดใช้งาน Cloud Firestore จะเป็นการเปิดใช้งาน API ใน Cloud API Manager
ตั้งค่าสภาพแวดล้อมการพัฒนาของคุณ
เพิ่มการพึ่งพาและไลบรารีของไคลเอ็นต์ที่จำเป็นในแอปของคุณ
Web version 8
- ทำตามคำแนะนำเพื่อ เพิ่ม Firebase ลงในเว็บแอป ของคุณ
- เพิ่มไลบรารี Firebase และ Cloud Firestore ในแอปของคุณ:
<script src="https://www.gstatic.com/firebasejs/8.10.1/firebase-app.js"></script> <script src="https://www.gstatic.com/firebasejs/8.10.1/firebase-firestore.js"></script>
Cloud Firestore SDK ยังพร้อมใช้งานเป็นแพ็คเกจ npmnpm install firebase@8.10.1 --save
คุณจะต้องใช้ทั้ง Firebase และ Cloud Firestore ด้วยตนเองconst firebase = require("firebase"); // Required for side-effects require("firebase/firestore");
Web version 9
- ทำตามคำแนะนำเพื่อ เพิ่ม Firebase ลงในเว็บแอป ของคุณ
- Cloud Firestore SDK พร้อมใช้งานเป็นแพ็คเกจ npm
npm install firebase@9.8.4 --save
คุณจะต้องนำเข้าทั้ง Firebase และ Cloud Firestoreimport { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore";
iOS+
ทำตามคำแนะนำเพื่อ เพิ่ม Firebase ในแอป Apple ของคุณ
ใช้ Swift Package Manager เพื่อติดตั้งและจัดการการพึ่งพา Firebase
- ใน Xcode เมื่อโปรเจ็กต์แอปของคุณเปิดอยู่ ให้ไปที่ File > Swift Packages > Add Package Dependency
- เมื่อได้รับแจ้ง ให้เพิ่มที่เก็บ SDK ของแพลตฟอร์ม Firebase Apple:
- เลือกไลบรารี Firestore
- เมื่อเสร็จแล้ว Xcode จะเริ่มแก้ไขและดาวน์โหลดการพึ่งพาของคุณในเบื้องหลังโดยอัตโนมัติ
https://github.com/firebase/firebase-ios-sdk
Java
- ทำตามคำแนะนำเพื่อ เพิ่ม Firebase ในแอป Android ของคุณ
- ใช้ Firebase Android BoM ประกาศการพึ่งพาไลบรารี Cloud Firestore Android ใน ไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติคือ
app/build.gradle
)dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:30.1.0') // Declare the dependency for the Cloud Firestore library // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-firestore' }
เมื่อใช้ Firebase Android BoM แอปของคุณจะใช้ไลบรารี Firebase Android เวอร์ชันที่เข้ากันได้เสมอ
(ทางเลือก) ประกาศการพึ่งพาไลบรารี Firebase โดยไม่ ใช้ BoM
หากคุณเลือกที่จะไม่ใช้ Firebase BoM คุณต้องระบุเวอร์ชันไลบรารี Firebase แต่ละเวอร์ชันในบรรทัดการพึ่งพา
โปรดทราบว่าหากคุณใช้ไลบรารี Firebase หลายรายการ ในแอปของคุณ เราขอแนะนำอย่างยิ่งให้ใช้ BoM เพื่อจัดการเวอร์ชันของไลบรารี ซึ่งจะทำให้มั่นใจได้ว่าทุกเวอร์ชันจะเข้ากันได้
dependencies { // Declare the dependency for the Cloud Firestore library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-firestore:24.2.0' }
Kotlin+KTX
- ทำตามคำแนะนำเพื่อ เพิ่ม Firebase ในแอป Android ของคุณ
- ใช้ Firebase Android BoM ประกาศการพึ่งพาไลบรารี Cloud Firestore Android ใน ไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติคือ
app/build.gradle
)dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:30.1.0') // Declare the dependency for the Cloud Firestore library // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-firestore-ktx' }
เมื่อใช้ Firebase Android BoM แอปของคุณจะใช้ไลบรารี Firebase Android เวอร์ชันที่เข้ากันได้เสมอ
(ทางเลือก) ประกาศการพึ่งพาไลบรารี Firebase โดยไม่ ใช้ BoM
หากคุณเลือกที่จะไม่ใช้ Firebase BoM คุณต้องระบุเวอร์ชันไลบรารี Firebase แต่ละเวอร์ชันในบรรทัดการพึ่งพา
โปรดทราบว่าหากคุณใช้ไลบรารี Firebase หลายรายการ ในแอปของคุณ เราขอแนะนำอย่างยิ่งให้ใช้ BoM เพื่อจัดการเวอร์ชันของไลบรารี ซึ่งจะทำให้มั่นใจได้ว่าทุกเวอร์ชันจะเข้ากันได้
dependencies { // Declare the dependency for the Cloud Firestore library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-firestore-ktx:24.2.0' }
Dart
- หากยังไม่ได้ดำเนินการ ให้ กำหนดค่าและเริ่มต้น Firebase ในแอป Flutter
- จากรูทของโปรเจ็กต์ Flutter ให้รันคำสั่งต่อไปนี้เพื่อติดตั้งปลั๊กอิน:
flutter pub add cloud_firestore
- เมื่อเสร็จแล้ว ให้สร้างแอปพลิเคชัน Flutter ของคุณใหม่:
flutter run
Java
- เพิ่ม Firebase Admin SDK ในแอปของคุณ:
- ใช้ Gradle:
compile 'com.google.firebase:firebase-admin:9.0.0'
- ใช้ Maven:
<dependency> <groupId>com.google.firebase</groupId> <artifactId>firebase-admin</artifactId> <version>9.0.0</version> </dependency>
- ใช้ Gradle:
- ทำตามคำแนะนำด้านล่างเพื่อเริ่มต้น Cloud Firestore ด้วยข้อมูลประจำตัวที่เหมาะสมในสภาพแวดล้อมของคุณ
Python
- เพิ่ม Firebase Admin SDK ให้กับแอป Python ของคุณ:
pip install --upgrade firebase-admin
- ทำตามคำแนะนำด้านล่างเพื่อเริ่มต้น Cloud Firestore ด้วยข้อมูลประจำตัวที่เหมาะสมในสภาพแวดล้อมของคุณ
C++
- ทำตามคำแนะนำเพื่อ เพิ่ม Firebase ในโครงการ C++ ของ คุณ
- อินเทอร์เฟซ C++ สำหรับ Android
- การพึ่งพา Gradle เพิ่มไฟล์ Gradle ของโมดูล (ระดับแอป) ต่อไปนี้ (โดยปกติคือ
app/build.gradle
):android.defaultConfig.externalNativeBuild.cmake { arguments "-DFIREBASE_CPP_SDK_DIR=$gradle.firebase_cpp_sdk_dir" } apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle" firebaseCpp.dependencies { // earlier entries auth firestore }
- การพึ่งพาไบนารี ในทำนองเดียวกัน วิธีที่แนะนำในการรับการพึ่งพาไบนารีคือการเพิ่มสิ่งต่อไปนี้ในไฟล์
CMakeLists.txt
ของคุณ:add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL) set(firebase_libs firebase_auth firebase_firestore firebase_app) # Replace the target name below with the actual name of your target, # for example, "native-lib". target_link_libraries(${YOUR_TARGET_NAME_HERE} "${firebase_libs}")
- ในการตั้งค่า การรวมเดสก์ท็อป โปรดดูที่ เพิ่ม Firebase ให้กับโปรเจ็กต์ C++ ของ คุณ
ความสามัคคี
- ทำตามคำแนะนำเพื่อ เพิ่ม Firebase ในโครงการ Unity ของคุณ
- อินเทอร์เฟซ Unity สำหรับ Android
- เลือก ไฟล์ > การตั้งค่าบิลด์
- เปลี่ยน 'แพลตฟอร์ม' เป็น 'Android' และคลิก 'สลับแพลตฟอร์ม'
- คลิก 'การตั้งค่าผู้เล่น…'
- ใน Unity UI หลัก ภายใต้ 'การตั้งค่าสำหรับ Android' เลือก 'การตั้งค่าการเผยแพร่'
- ในส่วน 'ลดขนาด' ให้เปลี่ยนการตั้งค่าการเปิดตัวและดีบั๊กจาก 'ไม่มี' เป็น 'ProGuard'
เมื่อสร้างสำหรับ Android ให้เปิดใช้งาน ProGuarding เพื่อหลีกเลี่ยงขีดจำกัด Android DEX ในการทำเช่นนั้น ในตัวแก้ไข Unity:
Node.js
- เพิ่ม Firebase Admin SDK ในแอปของคุณ:
npm install firebase-admin --save
- ทำตามคำแนะนำด้านล่างเพื่อเริ่มต้น Cloud Firestore ด้วยข้อมูลประจำตัวที่เหมาะสมในสภาพแวดล้อมของคุณ
ไป
- เพิ่ม Firebase Admin SDK ให้กับแอป Go:
go get firebase.google.com/go
- ทำตามคำแนะนำด้านล่างเพื่อเริ่มต้น Cloud Firestore ด้วยข้อมูลประจำตัวที่เหมาะสมในสภาพแวดล้อมของคุณ
PHP
- ไลบรารีไคลเอ็นต์เซิร์ฟเวอร์ Cloud Firestore (Java, Node.js, Python, Go, PHP, C# และ Ruby) ใช้ ข้อมูลรับรองเริ่มต้นของแอปพลิเคชัน Google สำหรับการตรวจสอบสิทธิ์
- ในการตรวจสอบสิทธิ์จากสภาพแวดล้อมการพัฒนาของคุณ ให้ตั้งค่าตัวแปรสภาพแวดล้อม
GOOGLE_APPLICATION_CREDENTIALS
ให้ชี้ไปที่ไฟล์คีย์บัญชีบริการ JSON คุณสามารถสร้างไฟล์คีย์ได้ใน หน้าข้อมูลรับรองของคอนโซล APIexport GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
- ในสภาพแวดล้อมที่ใช้งานจริง คุณไม่จำเป็นต้องตรวจสอบสิทธิ์หากคุณเรียกใช้แอปพลิเคชันบน App Engine หรือ Compute Engine โดยใช้โปรเจ็กต์เดียวกับที่คุณใช้สำหรับ Cloud Firestore มิฉะนั้น ตั้งค่าบัญชีบริการ
- ในการตรวจสอบสิทธิ์จากสภาพแวดล้อมการพัฒนาของคุณ ให้ตั้งค่าตัวแปรสภาพแวดล้อม
- ติดตั้งและเปิดใช้งาน ส่วนขยาย gRPC สำหรับ PHP ซึ่งคุณจะต้องใช้ไลบรารีของไคลเอ็นต์
- เพิ่มไลบรารี Cloud Firestore PHP ในแอปของคุณ:
composer require google/cloud-firestore
ค#
- ไลบรารีไคลเอ็นต์เซิร์ฟเวอร์ Cloud Firestore (Java, Node.js, Python, Go, PHP, C# และ Ruby) ใช้ ข้อมูลรับรองเริ่มต้นของแอปพลิเคชัน Google สำหรับการตรวจสอบสิทธิ์
- ในการตรวจสอบสิทธิ์จากสภาพแวดล้อมการพัฒนาของคุณ ให้ตั้งค่าตัวแปรสภาพแวดล้อม
GOOGLE_APPLICATION_CREDENTIALS
ให้ชี้ไปที่ไฟล์คีย์บัญชีบริการ JSON คุณสามารถสร้างไฟล์คีย์ได้ใน หน้าข้อมูลรับรองของคอนโซล APIexport GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
- ในสภาพแวดล้อมที่ใช้งานจริง คุณไม่จำเป็นต้องตรวจสอบสิทธิ์หากคุณเรียกใช้แอปพลิเคชันบน App Engine หรือ Compute Engine โดยใช้โปรเจ็กต์เดียวกับที่คุณใช้สำหรับ Cloud Firestore มิฉะนั้น ตั้งค่าบัญชีบริการ
- ในการตรวจสอบสิทธิ์จากสภาพแวดล้อมการพัฒนาของคุณ ให้ตั้งค่าตัวแปรสภาพแวดล้อม
- เพิ่มไลบรารี Cloud Firestore C# ในแอปของคุณในไฟล์
.csproj
:<ItemGroup> <PackageReference Include="Google.Cloud.Firestore" Version="1.1.0-beta01" /> </ItemGroup>
- เพิ่มข้อมูลต่อไปนี้ในไฟล์
Program.cs
ของคุณ:using Google.Cloud.Firestore;
ทับทิม
- ไลบรารีไคลเอ็นต์เซิร์ฟเวอร์ Cloud Firestore (Java, Node.js, Python, Go, PHP, C# และ Ruby) ใช้ ข้อมูลรับรองเริ่มต้นของแอปพลิเคชัน Google สำหรับการตรวจสอบสิทธิ์
- ในการตรวจสอบสิทธิ์จากสภาพแวดล้อมการพัฒนาของคุณ ให้ตั้งค่าตัวแปรสภาพแวดล้อม
GOOGLE_APPLICATION_CREDENTIALS
ให้ชี้ไปที่ไฟล์คีย์บัญชีบริการ JSON คุณสามารถสร้างไฟล์คีย์ได้ใน หน้าข้อมูลรับรองของคอนโซล APIexport GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
- ในสภาพแวดล้อมที่ใช้งานจริง คุณไม่จำเป็นต้องตรวจสอบสิทธิ์หากคุณเรียกใช้แอปพลิเคชันบน App Engine หรือ Compute Engine โดยใช้โปรเจ็กต์เดียวกับที่คุณใช้สำหรับ Cloud Firestore มิฉะนั้น ตั้งค่าบัญชีบริการ
- ในการตรวจสอบสิทธิ์จากสภาพแวดล้อมการพัฒนาของคุณ ให้ตั้งค่าตัวแปรสภาพแวดล้อม
- เพิ่มไลบรารี Cloud Firestore Ruby ในแอปของคุณใน
Gemfile
:gem "google-cloud-firestore"
- ติดตั้งการพึ่งพาจาก
Gemfile
ของคุณโดยใช้:bundle install
(ไม่บังคับ) ต้นแบบและทดสอบด้วย Firebase Local Emulator Suite
สำหรับนักพัฒนามือถือ ก่อนพูดถึงวิธีที่แอปของคุณเขียนและอ่านจาก Cloud Firestore เรามาแนะนำชุดเครื่องมือที่คุณสามารถใช้เพื่อสร้างต้นแบบและทดสอบการทำงานของ Cloud Firestore: Firebase Local Emulator Suite หากคุณกำลังทดลองใช้โมเดลข้อมูลต่างๆ เพิ่มประสิทธิภาพกฎความปลอดภัย หรือพยายามหาวิธีที่คุ้มค่าที่สุดในการโต้ตอบกับแบ็กเอนด์ ความสามารถในการทำงานในพื้นที่โดยไม่ต้องปรับใช้บริการสดอาจเป็นแนวคิดที่ดี
โปรแกรมจำลอง Cloud Firestore เป็นส่วนหนึ่งของ Local Emulator Suite ซึ่งช่วยให้แอปของคุณสามารถโต้ตอบกับเนื้อหาและการกำหนดค่าฐานข้อมูลที่จำลองได้ รวมถึงทรัพยากรโครงการจำลอง (ฟังก์ชัน ฐานข้อมูลอื่นๆ และกฎความปลอดภัย)
การใช้โปรแกรมจำลอง Cloud Firestore มีเพียงไม่กี่ขั้นตอน:
- การเพิ่มบรรทัดโค้ดในการกำหนดค่าการทดสอบของแอปเพื่อเชื่อมต่อกับโปรแกรมจำลอง
- จากรูทของไดเร็กทอรีโปรเจ็กต์ในเครื่องของคุณ ให้รัน
firebase emulators:start
- โทรจากโค้ดต้นแบบของแอปโดยใช้ SDK ของแพลตฟอร์ม Cloud Firestore ตามปกติ
มี คำแนะนำโดยละเอียดเกี่ยวกับ Cloud Firestore และ Cloud Functions คุณควรดูการ แนะนำ Local Emulator Suite ด้วย
เริ่มต้น Cloud Firestore
เริ่มต้นอินสแตนซ์ของ Cloud Firestore:
Web version 9
import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore"; // TODO: Replace the following with your app's Firebase project configuration // See: https://firebase.google.com/docs/web/learn-more#config-object const firebaseConfig = { // ... }; // Initialize Firebase const app = initializeApp(firebaseConfig); // Initialize Cloud Firestore and get a reference to the service const db = getFirestore(app);ค่าสำหรับ `initializeApp' สามารถพบได้ใน `firebaseConfig` ของเว็บแอป หากต้องการคงข้อมูลไว้เมื่ออุปกรณ์ขาดการเชื่อมต่อ โปรดดูเอกสารประกอบการ เปิดใช้งานข้อมูลออฟไลน์
Web version 8
import firebase from "firebase/app"; import "firebase/firestore"; // TODO: Replace the following with your app's Firebase project configuration // See: https://firebase.google.com/docs/web/learn-more#config-object const firebaseConfig = { // ... }; // Initialize Firebase firebase.initializeApp(firebaseConfig); // Initialize Cloud Firestore and get a reference to the service const db = firebase.firestore();ค่าสำหรับ `initializeApp' สามารถพบได้ใน `firebaseConfig` ของเว็บแอป หากต้องการคงข้อมูลไว้เมื่ออุปกรณ์ขาดการเชื่อมต่อ โปรดดูเอกสารประกอบการ เปิดใช้งานข้อมูลออฟไลน์
Swift
import FirebaseCore import FirebaseFirestore
FirebaseApp.configure() let db = Firestore.firestore()
วัตถุประสงค์-C
@import FirebaseCore; @import FirebaseFirestore; // Use Firebase library to configure APIs [FIRApp configure];
FIRFirestore *defaultFirestore = [FIRFirestore firestore];ตัวยึดตำแหน่ง33
Java
// Access a Cloud Firestore instance from your Activity
FirebaseFirestore db = FirebaseFirestore.getInstance();
Kotlin+KTX
// Access a Cloud Firestore instance from your Activity
val db = Firebase.firestore
Dart
db = FirebaseFirestore.instance;
Java
Cloud Firestore SDK เริ่มต้นได้หลายวิธีขึ้นอยู่กับสภาพแวดล้อมของคุณ ด้านล่างนี้เป็นวิธีการทั่วไป สำหรับข้อมูลอ้างอิงทั้งหมด โปรดดู ที่เริ่มต้น Admin SDKimport 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 และผู้ดูแลระบบ > บัญชีบริการ ใน Cloud Platform Console สร้างคีย์ส่วนตัวใหม่และบันทึกไฟล์ 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();
Python
Cloud Firestore SDK เริ่มต้นได้หลายวิธีขึ้นอยู่กับสภาพแวดล้อมของคุณ ด้านล่างนี้เป็นวิธีการทั่วไป สำหรับข้อมูลอ้างอิงทั้งหมด โปรดดู ที่เริ่มต้น Admin SDKimport 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, { 'projectId': project_id, }) db = firestore.client()
หากต้องการใช้ Firebase Admin SDK บนเซิร์ฟเวอร์ของคุณเอง ให้ใช้ บัญชีบริการ
ไปที่ IAM และผู้ดูแลระบบ > บัญชีบริการ ใน Cloud Platform Console สร้างคีย์ส่วนตัวใหม่และบันทึกไฟล์ 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') firebase_admin.initialize_app(cred) db = firestore.client()
Python
Cloud Firestore SDK เริ่มต้นได้หลายวิธีขึ้นอยู่กับสภาพแวดล้อมของคุณ ด้านล่างนี้เป็นวิธีการทั่วไป สำหรับข้อมูลอ้างอิงทั้งหมด โปรดดู ที่เริ่มต้น Admin SDKimport 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, { 'projectId': project_id, }) db = firestore.AsyncClient()
หากต้องการใช้ Firebase Admin SDK บนเซิร์ฟเวอร์ของคุณเอง ให้ใช้ บัญชีบริการ
ไปที่ IAM และผู้ดูแลระบบ > บัญชีบริการ ใน Cloud Platform Console สร้างคีย์ส่วนตัวใหม่และบันทึกไฟล์ 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') firebase_admin.initialize_app(cred) db = firestore.AsyncClient()
C++
// Make sure the call to `Create()` happens some time before you call Firestore::GetInstance(). App::Create(); Firestore* db = Firestore::GetInstance();
Node.js
Cloud Firestore SDK เริ่มต้นได้หลายวิธีขึ้นอยู่กับสภาพแวดล้อมของคุณ ด้านล่างนี้เป็นวิธีการทั่วไป สำหรับข้อมูลอ้างอิงทั้งหมด โปรดดู ที่เริ่มต้น Admin SDK- เริ่มต้นบน Cloud Functions
const { initializeApp, applicationDefault, cert } = require('firebase-admin/app'); const { getFirestore, Timestamp, FieldValue } = require('firebase-admin/firestore');
initializeApp(); const db = getFirestore();
- เริ่มต้นบน Google Cloud Platform
const { initializeApp, applicationDefault, cert } = require('firebase-admin/app'); const { getFirestore, Timestamp, FieldValue } = require('firebase-admin/firestore');
initializeApp({ credential: applicationDefault() }); const db = getFirestore();
- เริ่มต้นบนเซิร์ฟเวอร์ของคุณเอง
หากต้องการใช้ Firebase Admin SDK บนเซิร์ฟเวอร์ของคุณเอง (หรือสภาพแวดล้อม Node.js อื่นๆ) ให้ใช้ บัญชีบริการ ไปที่ IAM และผู้ดูแลระบบ > บัญชีบริการ ใน Cloud Platform Console สร้างคีย์ส่วนตัวใหม่และบันทึกไฟล์ JSON จากนั้นใช้ไฟล์เพื่อเริ่มต้น SDK:
const { initializeApp, applicationDefault, cert } = require('firebase-admin/app'); const { getFirestore, Timestamp, FieldValue } = require('firebase-admin/firestore');
const serviceAccount = require('./path/to/serviceAccountKey.json'); initializeApp({ credential: cert(serviceAccount) }); const db = getFirestore();
ตัวยึดตำแหน่ง51
ไป
Cloud Firestore SDK เริ่มต้นได้หลายวิธีขึ้นอยู่กับสภาพแวดล้อมของคุณ ด้านล่างนี้เป็นวิธีการทั่วไป สำหรับข้อมูลอ้างอิงทั้งหมด โปรดดู ที่เริ่มต้น Admin SDKimport ( "log" firebase "firebase.google.com/go" "google.golang.org/api/option" ) // Use the application default credentials ctx := context.Background() conf := &firebase.Config{ProjectID: projectID} app, err := firebase.NewApp(ctx, conf) if err != nil { log.Fatalln(err) } client, err := app.Firestore(ctx) if err != nil { log.Fatalln(err) } defer client.Close()
หากต้องการใช้ Firebase Admin SDK บนเซิร์ฟเวอร์ของคุณเอง ให้ใช้ บัญชีบริการ
ไปที่ IAM และผู้ดูแลระบบ > บัญชีบริการ ใน Cloud Platform Console สร้างคีย์ส่วนตัวใหม่และบันทึกไฟล์ JSON จากนั้นใช้ไฟล์เพื่อเริ่มต้น SDK:
import ( "log" firebase "firebase.google.com/go" "google.golang.org/api/option" ) // Use a service account ctx := context.Background() sa := option.WithCredentialsFile("path/to/serviceAccount.json") app, err := firebase.NewApp(ctx, nil, sa) if err != nil { log.Fatalln(err) } client, err := app.Firestore(ctx) if err != nil { log.Fatalln(err) } defer client.Close()
PHP
use Google\Cloud\Firestore\FirestoreClient; /** * Initialize Cloud Firestore with default project ID. */ function setup_client_create(string $projectId = null) { // Create the Cloud Firestore client if (empty($projectId)) { // The `projectId` parameter is optional and represents which project the // client will act on behalf of. If not supplied, the client falls back to // the default project inferred from the environment. $db = new FirestoreClient(); printf('Created Cloud Firestore client with default project ID.' . PHP_EOL); } else { $db = new FirestoreClient([ 'projectId' => $projectId, ]); printf('Created Cloud Firestore client with project ID: %s' . PHP_EOL, $projectId); } }
ความสามัคคี
using Firebase.Firestore; using Firebase.Extensions;
FirebaseFirestore db = FirebaseFirestore.DefaultInstance;
ค#
FirestoreDb db = FirestoreDb.Create(project); Console.WriteLine("Created Cloud Firestore client with project ID: {0}", project);
ทับทิม
เพิ่มข้อมูล
Cloud Firestore จัดเก็บข้อมูลในเอกสารซึ่งจัดเก็บไว้ในคอลเล็กชัน Cloud Firestore สร้างคอลเล็กชันและเอกสารโดยนัยในครั้งแรกที่คุณเพิ่มข้อมูลลงในเอกสาร คุณไม่จำเป็นต้องสร้างคอลเลกชันหรือเอกสารอย่างชัดเจน
สร้างคอลเลกชันใหม่และเอกสารโดยใช้โค้ดตัวอย่างต่อไปนี้
Web version 9
import { collection, addDoc } from "firebase/firestore"; try { const docRef = await addDoc(collection(db, "users"), { first: "Ada", last: "Lovelace", born: 1815 }); console.log("Document written with ID: ", docRef.id); } catch (e) { console.error("Error adding document: ", e); }
Web version 8
db.collection("users").add({ first: "Ada", last: "Lovelace", born: 1815 }) .then((docRef) => { console.log("Document written with ID: ", docRef.id); }) .catch((error) => { console.error("Error adding document: ", error); });
Swift
// Add a new document with a generated ID var ref: DocumentReference? = nil ref = db.collection("users").addDocument(data: [ "first": "Ada", "last": "Lovelace", "born": 1815 ]) { err in if let err = err { print("Error adding document: \(err)") } else { print("Document added with ID: \(ref!.documentID)") } }
วัตถุประสงค์-C
// Add a new document with a generated ID __block FIRDocumentReference *ref = [[self.db collectionWithPath:@"users"] addDocumentWithData:@{ @"first": @"Ada", @"last": @"Lovelace", @"born": @1815 } completion:^(NSError * _Nullable error) { if (error != nil) { NSLog(@"Error adding document: %@", error); } else { NSLog(@"Document added with ID: %@", ref.documentID); } }];
Java
// Create a new user with a first and last name Map<String, Object> user = new HashMap<>(); user.put("first", "Ada"); user.put("last", "Lovelace"); user.put("born", 1815); // Add a new document with a generated ID db.collection("users") .add(user) .addOnSuccessListener(new OnSuccessListener<DocumentReference>() { @Override public void onSuccess(DocumentReference documentReference) { Log.d(TAG, "DocumentSnapshot added with ID: " + documentReference.getId()); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "Error adding document", e); } });
Kotlin+KTX
// Create a new user with a first and last name val user = hashMapOf( "first" to "Ada", "last" to "Lovelace", "born" to 1815 ) // Add a new document with a generated ID db.collection("users") .add(user) .addOnSuccessListener { documentReference -> Log.d(TAG, "DocumentSnapshot added with ID: ${documentReference.id}") } .addOnFailureListener { e -> Log.w(TAG, "Error adding document", e) }
Dart
// Create a new user with a first and last name final user = <String, dynamic>{ "first": "Ada", "last": "Lovelace", "born": 1815 }; // Add a new document with a generated ID db.collection("users").add(user).then((DocumentReference doc) => print('DocumentSnapshot added with ID: ${doc.id}'));
Java
Python
Python
C++
// Add a new document with a generated ID Future<DocumentReference> user_ref = db->Collection("users").Add({{"first", FieldValue::String("Ada")}, {"last", FieldValue::String("Lovelace")}, {"born", FieldValue::Integer(1815)}}); user_ref.OnCompletion([](const Future<DocumentReference>& future) { if (future.error() == Error::kErrorOk) { std::cout << "DocumentSnapshot added with ID: " << future.result()->id() << std::endl; } else { std::cout << "Error adding document: " << future.error_message() << std::endl; } });
Node.js
ไป
PHP
$docRef = $db->collection('samples/php/users')->document('lovelace'); $docRef->set([ 'first' => 'Ada', 'last' => 'Lovelace', 'born' => 1815 ]); printf('Added data to the lovelace document in the users collection.' . PHP_EOL);
ความสามัคคี
DocumentReference docRef = db.Collection("users").Document("alovelace"); Dictionary<string, object> user = new Dictionary<string, object> { { "First", "Ada" }, { "Last", "Lovelace" }, { "Born", 1815 }, }; docRef.SetAsync(user).ContinueWithOnMainThread(task => { Debug.Log("Added data to the alovelace document in the users collection."); });
ค#
DocumentReference docRef = db.Collection("users").Document("alovelace"); Dictionary<string, object> user = new Dictionary<string, object> { { "First", "Ada" }, { "Last", "Lovelace" }, { "Born", 1815 } }; await docRef.SetAsync(user);
ทับทิม
ตอนนี้เพิ่มเอกสารอื่นในคอลเลกชัน users
โปรดสังเกตว่าเอกสารนี้มีคู่คีย์-ค่า (ชื่อกลาง) ที่ไม่ปรากฏในเอกสารแรก เอกสารในคอลเลกชั่นสามารถมีชุดข้อมูลที่แตกต่างกันได้
Web version 9
// Add a second document with a generated ID. import { addDoc, collection } from "firebase/firestore"; try { const docRef = await addDoc(collection(db, "users"), { first: "Alan", middle: "Mathison", last: "Turing", born: 1912 }); console.log("Document written with ID: ", docRef.id); } catch (e) { console.error("Error adding document: ", e); }
Web version 8
// Add a second document with a generated ID. db.collection("users").add({ first: "Alan", middle: "Mathison", last: "Turing", born: 1912 }) .then((docRef) => { console.log("Document written with ID: ", docRef.id); }) .catch((error) => { console.error("Error adding document: ", error); });
Swift
// Add a second document with a generated ID. ref = db.collection("users").addDocument(data: [ "first": "Alan", "middle": "Mathison", "last": "Turing", "born": 1912 ]) { err in if let err = err { print("Error adding document: \(err)") } else { print("Document added with ID: \(ref!.documentID)") } }
วัตถุประสงค์-C
// Add a second document with a generated ID. __block FIRDocumentReference *ref = [[self.db collectionWithPath:@"users"] addDocumentWithData:@{ @"first": @"Alan", @"middle": @"Mathison", @"last": @"Turing", @"born": @1912 } completion:^(NSError * _Nullable error) { if (error != nil) { NSLog(@"Error adding document: %@", error); } else { NSLog(@"Document added with ID: %@", ref.documentID); } }];
Java
// Create a new user with a first, middle, and last name Map<String, Object> user = new HashMap<>(); user.put("first", "Alan"); user.put("middle", "Mathison"); user.put("last", "Turing"); user.put("born", 1912); // Add a new document with a generated ID db.collection("users") .add(user) .addOnSuccessListener(new OnSuccessListener<DocumentReference>() { @Override public void onSuccess(DocumentReference documentReference) { Log.d(TAG, "DocumentSnapshot added with ID: " + documentReference.getId()); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "Error adding document", e); } });
Kotlin+KTX
// Create a new user with a first, middle, and last name val user = hashMapOf( "first" to "Alan", "middle" to "Mathison", "last" to "Turing", "born" to 1912 ) // Add a new document with a generated ID db.collection("users") .add(user) .addOnSuccessListener { documentReference -> Log.d(TAG, "DocumentSnapshot added with ID: ${documentReference.id}") } .addOnFailureListener { e -> Log.w(TAG, "Error adding document", e) }
Dart
// Create a new user with a first and last name final user = <String, dynamic>{ "first": "Alan", "middle": "Mathison", "last": "Turing", "born": 1912 }; // Add a new document with a generated ID db.collection("users").add(user).then((DocumentReference doc) => print('DocumentSnapshot added with ID: ${doc.id}'));
Java
Python
Python
C++
db->Collection("users") .Add({{"first", FieldValue::String("Alan")}, {"middle", FieldValue::String("Mathison")}, {"last", FieldValue::String("Turing")}, {"born", FieldValue::Integer(1912)}}) .OnCompletion([](const Future<DocumentReference>& future) { if (future.error() == Error::kErrorOk) { std::cout << "DocumentSnapshot added with ID: " << future.result()->id() << std::endl; } else { std::cout << "Error adding document: " << future.error_message() << std::endl; } });
Node.js
ไป
PHP
$docRef = $db->collection('samples/php/users')->document('aturing'); $docRef->set([ 'first' => 'Alan', 'middle' => 'Mathison', 'last' => 'Turing', 'born' => 1912 ]); printf('Added data to the aturing document in the users collection.' . PHP_EOL);
ความสามัคคี
DocumentReference docRef = db.Collection("users").Document("aturing"); Dictionary<string, object> user = new Dictionary<string, object> { { "First", "Alan" }, { "Middle", "Mathison" }, { "Last", "Turing" }, { "Born", 1912 } }; docRef.SetAsync(user).ContinueWithOnMainThread(task => { Debug.Log("Added data to the aturing document in the users collection."); });
ค#
DocumentReference docRef = db.Collection("users").Document("aturing"); Dictionary<string, object> user = new Dictionary<string, object> { { "First", "Alan" }, { "Middle", "Mathison" }, { "Last", "Turing" }, { "Born", 1912 } }; await docRef.SetAsync(user);
ทับทิม
อ่านข้อมูล
หากต้องการตรวจสอบอย่างรวดเร็วว่าคุณได้เพิ่มข้อมูลไปยัง Cloud Firestore ให้ใช้โปรแกรมดูข้อมูลใน คอนโซล Firebase
คุณยังสามารถใช้เมธอด "get" เพื่อดึงข้อมูลคอลเลคชันทั้งหมดได้
Web version 9
import { collection, getDocs } from "firebase/firestore"; const querySnapshot = await getDocs(collection(db, "users")); querySnapshot.forEach((doc) => { console.log(`${doc.id} => ${doc.data()}`); });
Web version 8
db.collection("users").get().then((querySnapshot) => { querySnapshot.forEach((doc) => { console.log(`${doc.id} => ${doc.data()}`); }); });
Swift
db.collection("users").getDocuments() { (querySnapshot, err) in if let err = err { print("Error getting documents: \(err)") } else { for document in querySnapshot!.documents { print("\(document.documentID) => \(document.data())") } } }
วัตถุประสงค์-C
[[self.db collectionWithPath:@"users"] getDocumentsWithCompletion:^(FIRQuerySnapshot * _Nullable snapshot, NSError * _Nullable error) { if (error != nil) { NSLog(@"Error getting documents: %@", error); } else { for (FIRDocumentSnapshot *document in snapshot.documents) { NSLog(@"%@ => %@", document.documentID, document.data); } } }];
Java
db.collection("users") .get() .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() { @Override public void onComplete(@NonNull Task<QuerySnapshot> task) { if (task.isSuccessful()) { for (QueryDocumentSnapshot document : task.getResult()) { Log.d(TAG, document.getId() + " => " + document.getData()); } } else { Log.w(TAG, "Error getting documents.", task.getException()); } } });
Kotlin+KTX
db.collection("users") .get() .addOnSuccessListener { result -> for (document in result) { Log.d(TAG, "${document.id} => ${document.data}") } } .addOnFailureListener { exception -> Log.w(TAG, "Error getting documents.", exception) }
Dart
await db.collection("users").get().then((event) { for (var doc in event.docs) { print("${doc.id} => ${doc.data()}"); } });
Java
Python
users_ref = db.collection(u'users') docs = users_ref.stream() for doc in docs: print(f'{doc.id} => {doc.to_dict()}')
Python
C++
Future<QuerySnapshot> users = db->Collection("users").Get(); users.OnCompletion([](const Future<QuerySnapshot>& future) { if (future.error() == Error::kErrorOk) { for (const DocumentSnapshot& document : future.result()->documents()) { std::cout << document << std::endl; } } else { std::cout << "Error getting documents: " << future.error_message() << std::endl; } });
Node.js
ไป
PHP
$usersRef = $db->collection('samples/php/users'); $snapshot = $usersRef->documents(); foreach ($snapshot as $user) { printf('User: %s' . PHP_EOL, $user->id()); printf('First: %s' . PHP_EOL, $user['first']); if (!empty($user['middle'])) { printf('Middle: %s' . PHP_EOL, $user['middle']); } printf('Last: %s' . PHP_EOL, $user['last']); printf('Born: %d' . PHP_EOL, $user['born']); printf(PHP_EOL); } printf('Retrieved and printed out all documents from the users collection.' . PHP_EOL);
ความสามัคคี
CollectionReference usersRef = db.Collection("users"); usersRef.GetSnapshotAsync().ContinueWithOnMainThread(task => { QuerySnapshot snapshot = task.Result; foreach (DocumentSnapshot document in snapshot.Documents) { Debug.Log(String.Format("User: {0}", document.Id)); Dictionary<string, object> documentDictionary = document.ToDictionary(); Debug.Log(String.Format("First: {0}", documentDictionary["First"])); if (documentDictionary.ContainsKey("Middle")) { Debug.Log(String.Format("Middle: {0}", documentDictionary["Middle"])); } Debug.Log(String.Format("Last: {0}", documentDictionary["Last"])); Debug.Log(String.Format("Born: {0}", documentDictionary["Born"])); } Debug.Log("Read all data from the users collection."); });
ค#
CollectionReference usersRef = db.Collection("users"); QuerySnapshot snapshot = await usersRef.GetSnapshotAsync(); foreach (DocumentSnapshot document in snapshot.Documents) { Console.WriteLine("User: {0}", document.Id); Dictionary<string, object> documentDictionary = document.ToDictionary(); Console.WriteLine("First: {0}", documentDictionary["First"]); if (documentDictionary.ContainsKey("Middle")) { Console.WriteLine("Middle: {0}", documentDictionary["Middle"]); } Console.WriteLine("Last: {0}", documentDictionary["Last"]); Console.WriteLine("Born: {0}", documentDictionary["Born"]); Console.WriteLine(); }
ทับทิม
รักษาความปลอดภัยข้อมูลของคุณ
หากคุณใช้ SDK แพลตฟอร์มบนเว็บ, Android หรือ Apple ให้ใช้ Firebase Authentication และ Cloud Firestore Security Rules เพื่อรักษาความปลอดภัยข้อมูลของคุณใน Cloud Firestore
ต่อไปนี้คือชุดกฎพื้นฐานบางส่วนที่คุณสามารถใช้เพื่อเริ่มต้น คุณแก้ไขกฎความปลอดภัยได้ใน แท็บกฎ ของคอนโซล
ต้องมีการตรวจสอบสิทธิ์
// Allow read/write access on all documents to any user signed in to the application
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
โหมดล็อค
// Deny read/write access to all users under any conditions
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
}
}
โหมดทดสอบ
// Allow read/write access to all users under any conditions
// Warning: **NEVER** use this rule set in production; it allows
// anyone to overwrite your entire database.
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
ก่อนที่คุณจะปรับใช้เว็บ, Android หรือแอป iOS ในการผลิต ให้ทำตามขั้นตอนเพื่อให้แน่ใจว่ามีเพียงไคลเอ็นต์แอปของคุณเท่านั้นที่สามารถเข้าถึงข้อมูล Cloud Firestore ของคุณได้ ดูเอกสารการ ตรวจสอบแอป
หากคุณกำลังใช้หนึ่งในเซิร์ฟเวอร์ SDK ให้ใช้ Identity and Access Management (IAM) เพื่อรักษาความปลอดภัยข้อมูลของคุณใน Cloud Firestore
ดูวิดีโอสอน
สำหรับคำแนะนำโดยละเอียดเกี่ยวกับการเริ่มต้นใช้งานไลบรารีไคลเอนต์มือถือ Cloud Firestore โปรดดูหนึ่งในวิดีโอแนะนำต่อไปนี้:
เว็บ
iOS+
Android
คุณสามารถค้นหาวิดีโอเพิ่มเติมได้ใน ช่อง YouTube ของ Firebase
ขั้นตอนถัดไป
เพิ่มพูนความรู้ของคุณด้วยหัวข้อต่อไปนี้:
- Codelabs — เรียนรู้การใช้ Cloud Firestore ในแอปจริงโดยทำตาม codelab สำหรับ Android , iOS หรือ เว็บ
- โมเดลข้อมูล — เรียนรู้เพิ่มเติมเกี่ยวกับวิธีการจัดโครงสร้างข้อมูลใน Cloud Firestore รวมถึงข้อมูลแบบลำดับชั้นและการรวบรวมย่อย
- เพิ่มข้อมูล — เรียนรู้เพิ่มเติมเกี่ยวกับการสร้างและอัปเดตข้อมูลใน Cloud Firestore
- รับ ข้อมูล — เรียนรู้เพิ่มเติมเกี่ยวกับวิธีการดึงข้อมูล
- ดำเนินการค้นหาแบบง่ายและแบบผสม - เรียนรู้วิธีเรียกใช้แบบสอบถามแบบง่ายและแบบผสม
- สั่งซื้อและจำกัดการสืบค้น เรียนรู้วิธีสั่งซื้อและจำกัดข้อมูลที่ส่งกลับจากการสืบค้นของคุณ