การเริ่มต้นอย่างรวดเร็วนี้จะแสดงวิธีตั้งค่า 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 ให้เลือกโหมดล็อกขณะคุมสอบ
กฎความปลอดภัยของ Cloud Firestore ชุดเริ่มต้นจะมีผลกับฐานข้อมูล Cloud Firestore เริ่มต้น หากสร้างฐานข้อมูลหลายรายการสำหรับโปรเจ็กต์ คุณจะทำให้กฎการรักษาความปลอดภัยของ Cloud Firestore ใช้งานได้สำหรับฐานข้อมูลแต่ละรายการ
เลือกตำแหน่งที่ตั้งสำหรับฐานข้อมูล
การตั้งค่าตำแหน่งนี้เป็นตำแหน่งทรัพยากรเริ่มต้นของ Google Cloud Platform (GCP) ของโปรเจ็กต์ โปรดทราบว่าตำแหน่งนี้จะใช้สำหรับบริการ GCP ในโปรเจ็กต์ของคุณที่ต้องมีการตั้งค่าตำแหน่ง โดยเฉพาะที่เก็บข้อมูล Cloud Storage เริ่มต้นและแอป App Engine (ซึ่งจำเป็นหากคุณใช้ Cloud Scheduler)
หากเลือกตำแหน่งไม่ได้ แสดงว่าโปรเจ็กต์มีตำแหน่งทรัพยากร GCP เริ่มต้นอยู่แล้ว โดยค่านี้จะตั้งค่าไว้ระหว่างการสร้างโปรเจ็กต์หรือเมื่อตั้งค่าบริการอื่นที่ต้องตั้งค่าตำแหน่ง
คลิกเสร็จ
การเปิดใช้ Cloud Firestore จะเป็นการเปิดใช้ API ใน Cloud API Manager ด้วย
ตั้งค่าสภาพแวดล้อมในการพัฒนาซอฟต์แวร์
เพิ่มทรัพยากร Dependency และไลบรารีของไคลเอ็นต์ที่จำเป็นลงในแอป
Web
- ทำตามวิธีการเพื่อเพิ่ม Firebase ลงในเว็บแอป
- เพิ่มไลบรารี Firebase และ Cloud Firestore ลงในแอป
<script src="https://www.gstatic.com/firebasejs/10.12.2/firebase-app-compat.js"></script> <script src="https://www.gstatic.com/firebasejs/10.12.2/firebase-firestore-compat.js"></script>
Cloud Firestore SDK พร้อมใช้งานเป็นแพ็กเกจ npm ด้วยnpm install firebase@10.12.2 --save
คุณจะต้องมีทั้ง Firebase และ Cloud Firestore ด้วยตนเองimport firebase from "firebase/compat/app"; // Required for side-effects import "firebase/firestore";
Web
- ทำตามวิธีการเพื่อเพิ่ม Firebase ลงในเว็บแอป
-
Cloud Firestore SDK พร้อมให้บริการเป็นแพ็กเกจ npm
npm install firebase@10.12.2 --save
คุณจะต้องนำเข้าทั้ง Firebase และ Cloud Firestoreimport { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore";
iOS ขึ้นไป
ทำตามวิธีการเพิ่ม Firebase ลงในแอป Apple
ใช้ Swift Package Manager เพื่อติดตั้งและจัดการทรัพยากร Dependency ของ Firebase
- เปิดโปรเจ็กต์แอปใน Xcode แล้วไปที่ไฟล์ > แพ็กเกจ Swift > เพิ่มทรัพยากร Dependency ของแพ็กเกจ
- เมื่อได้รับข้อความแจ้ง ให้เพิ่มที่เก็บ SDK สำหรับแพลตฟอร์ม Firebase ของ Apple ดังนี้
- เลือกไลบรารี Firestore
- เมื่อเสร็จสิ้นแล้ว Xcode จะเริ่มแก้ปัญหาและดาวน์โหลดทรัพยากร Dependency ในเบื้องหลังโดยอัตโนมัติ
https://github.com/firebase/firebase-ios-sdk
Android
- ทำตามวิธีการเพิ่ม Firebase ลงในแอป Android
- ใช้ Firebase Android BoM เพื่อประกาศทรัพยากร Dependency ของไลบรารี Cloud Firestore สำหรับ Android ในไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติแล้วจะเป็น
app/build.gradle.kts
หรือapp/build.gradle
)dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.1.1")) // 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 เวอร์ชันที่เข้ากันได้เสมอ
(ทางเลือก) ประกาศทรัพยากร Dependency ของไลบรารี Firebase โดยไม่ต้องใช้ BoM
หากเลือกไม่ใช้ Firebase BoM คุณต้องระบุเวอร์ชันไลบรารี Firebase แต่ละเวอร์ชันในบรรทัดทรัพยากร Dependency
โปรดทราบว่าหากคุณใช้ไลบรารี 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:25.0.0") }
หากกำลังมองหาโมดูลไลบรารีสำหรับ Kotlin โดยเฉพาะ ตั้งแต่รุ่นเดือนตุลาคม 2023 เป็นต้นไป ทั้งนักพัฒนา Kotlin และ Java จะใช้โมดูลไลบรารีหลักได้ (ดูรายละเอียดได้ที่คําถามที่พบบ่อยเกี่ยวกับโครงการริเริ่มนี้)
Dart
- หากยังไม่ได้ดำเนินการ ให้กำหนดค่าและเริ่มต้น Firebase ในแอป Flutter
- จากรูทของโปรเจ็กต์ Flutter ให้เรียกใช้คำสั่งต่อไปนี้เพื่อติดตั้งปลั๊กอิน
flutter pub add cloud_firestore
- เมื่อดำเนินการเสร็จแล้ว ให้สร้างแอปพลิเคชัน Flutter อีกครั้งโดยทำดังนี้
flutter run
- ไม่บังคับ: ปรับปรุงเวลาบิลด์ของ iOS และ macOS ด้วยการรวมเฟรมเวิร์กที่คอมไพล์ไว้ล่วงหน้า
ปัจจุบัน Firestore SDK สำหรับ iOS ต้องใช้โค้ดที่อาจใช้เวลาถึง 5 นาทีในการสร้างใน Xcode หากต้องการลดเวลาบิลด์ลงอย่างมาก คุณอาจใช้เวอร์ชันที่ได้รับการคอมไพล์ไว้ล่วงหน้าได้โดยการเพิ่มบรรทัดนี้ลงในบล็อก
target 'Runner' do
ใน Podfiletarget 'Runner' do use_frameworks! use_modular_headers! pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => 'IOS_SDK_VERSION' flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) target 'RunnerTests' do inherit! :search_paths end end
แทนที่ IOS_SDK_VERSION ด้วยเวอร์ชันของ Firebase iOS SDK ที่ระบุในไฟล์
firebase_sdk_version.rb
ของfirebase_core
หากคุณไม่ได้ใช้firebase_core
เวอร์ชันล่าสุด ให้ค้นหาไฟล์นี้ในแคชแพ็กเกจ Pub ในเครื่อง (โดยปกติคือ~/.pub-cache
)และตรวจสอบว่าคุณได้อัปเกรด CocoaPods เป็นเวอร์ชัน 1.9.1 ขึ้นไปแล้ว โดยทำดังนี้
gem install cocoapods
ดูข้อมูลเพิ่มเติมได้ในปัญหาเกี่ยวกับ GitHub
Java
- เพิ่ม Firebase Admin SDK ลงในแอป ดังนี้
-
ใช้ Gradle
compile 'com.google.firebase:firebase-admin:1.32.0'
-
การใช้ Maven
<dependency> <groupId>com.google.firebase</groupId> <artifactId>firebase-admin</artifactId> <version>1.32.0</version> </dependency>
-
ใช้ Gradle
- ทำตามวิธีการด้านล่างเพื่อเริ่มต้น Cloud Firestore ด้วยข้อมูลเข้าสู่ระบบที่เหมาะสมในสภาพแวดล้อมของคุณ
Python
- เพิ่ม Firebase Admin SDK ไปยังแอป Python ดังนี้
pip install --upgrade firebase-admin
- ทำตามวิธีการด้านล่างเพื่อเริ่มต้น Cloud Firestore ด้วยข้อมูลเข้าสู่ระบบที่เหมาะสมในสภาพแวดล้อมของคุณ
C++
- ทำตามวิธีการเพื่อเพิ่ม Firebase ลงในโปรเจ็กต์ C++
- อินเทอร์เฟซ C++ สำหรับ Android
- ทรัพยากร Dependency ของ 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 }
- ทรัพยากร Dependency แบบไบนารี ในทำนองเดียวกัน วิธีที่แนะนำในการรับทรัพยากร Dependency แบบไบนารีคือการเพิ่มค่าต่อไปนี้ลงในไฟล์
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++
Unity
- ทำตามวิธีการเพื่อเพิ่ม Firebase ลงในโปรเจ็กต์ Unity
- ใช้อินเทอร์เฟซ Unity เพื่อกำหนดค่าโปรเจ็กต์เพื่อลดบิลด์ Android
- ตัวเลือกนี้อยู่ในการตั้งค่าโปรแกรมเล่น > Android > การตั้งค่าการเผยแพร่ > ลดขนาด
- ตัวเลือกอาจแตกต่างกันไปใน Unity เวอร์ชันต่างๆ โปรดดู เอกสาร Unity อย่างเป็นทางการและ คู่มือแก้ไขข้อบกพร่องบิลด์ของ Firebase Unity
-
หากหลังจากเปิดใช้การลดขนาดแล้ว จำนวนเมธอดที่อ้างอิงยังคงเกินขีดจำกัด อีกตัวเลือกหนึ่งคือการเปิดใช้
multidex
ในรายการต่อไปนี้-
mainTemplate.gradle
ถ้าเปิดใช้เทมเพลต Gradle ที่กำหนดเองในส่วนการตั้งค่าโปรแกรมเล่นไว้ -
หรือไฟล์
build.gradle
ระดับโมดูล หากคุณใช้ Android Studio เพื่อสร้างโปรเจ็กต์ที่ส่งออก
-
คุณต้องลดขนาดบิลด์เพื่อหลีกเลี่ยงข้อความ Error while merging dex archives
Node.js
-
เพิ่ม Firebase Admin SDK ลงในแอป
npm install firebase-admin --save
- ทำตามวิธีการด้านล่างเพื่อเริ่มต้น Cloud Firestore ด้วยข้อมูลเข้าสู่ระบบที่เหมาะสมในสภาพแวดล้อมของคุณ
Go
- เพิ่ม 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 ซึ่งจะต้องใช้ไลบรารีของไคลเอ็นต์
-
เพิ่มไลบรารี PHP ของ Cloud Firestore ลงในแอป
composer require google/cloud-firestore
C#
-
ไลบรารีของไคลเอ็นต์เซิร์ฟเวอร์ 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;
Ruby
-
ไลบรารีของไคลเอ็นต์เซิร์ฟเวอร์ 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 ไม่เช่นนั้น ให้สร้างบัญชีบริการ
-
หากต้องการตรวจสอบสิทธิ์จากสภาพแวดล้อมในการพัฒนาซอฟต์แวร์ ให้ตั้งค่าตัวแปรสภาพแวดล้อม
-
เพิ่มไลบรารี Ruby ใน Cloud Firestore ลงในแอปใน
Gemfile
:gem "google-cloud-firestore"
-
ติดตั้งการอ้างอิงจาก
Gemfile
โดยใช้:bundle install
(ไม่บังคับ) สร้างต้นแบบและทดสอบด้วย Firebase Local Emulator Suite
สำหรับนักพัฒนาซอฟต์แวร์บนอุปกรณ์เคลื่อนที่ ก่อนที่จะพูดถึงการเขียนและการอ่านแอปจาก Cloud Firestore ของแอป เราขอแนะนำชุดเครื่องมือที่คุณสามารถใช้สร้างต้นแบบและทดสอบฟังก์ชันการทำงานของ Cloud Firestore ซึ่งก็คือชุด Firebase Local Emulator Suite ได้ หากกำลังลองใช้โมเดลข้อมูลแบบต่างๆ เพิ่มประสิทธิภาพกฎการรักษาความปลอดภัย หรือหาวิธีที่คุ้มค่าที่สุดในการโต้ตอบกับระบบแบ็กเอนด์ การทำงานในองค์กรได้โดยไม่ต้องทำให้บริการแบบสดใช้งานได้อาจเป็นความคิดที่ดี
โปรแกรมจำลอง Cloud Firestore เป็นส่วนหนึ่งของชุดโปรแกรมจำลองภายใน ซึ่งจะช่วยให้แอปโต้ตอบกับเนื้อหาและการกำหนดค่าฐานข้อมูลที่จำลอง ตลอดจนทรัพยากรโปรเจ็กต์ที่จำลอง (ฟังก์ชัน ฐานข้อมูลอื่นๆ และกฎความปลอดภัย) หรือไม่ก็ได้
การใช้โปรแกรมจำลอง Cloud Firestore ประกอบด้วยไม่กี่ขั้นตอนดังนี้
- การเพิ่มบรรทัดโค้ดลงในการกำหนดค่าการทดสอบของแอปเพื่อเชื่อมต่อกับโปรแกรมจำลอง
- จากรูทของไดเรกทอรีโปรเจ็กต์ในเครื่องโดยเรียกใช้
firebase emulators:start
- การเรียกใช้จากโค้ดต้นแบบของแอปโดยใช้ SDK ของแพลตฟอร์ม Cloud Firestore ตามปกติ
โปรดดูคำแนะนำแบบทีละขั้นเกี่ยวกับ Cloud Firestore และ Cloud Functions โดยละเอียด นอกจากนี้คุณควรดูข้อมูลที่ข้อมูลเบื้องต้นเกี่ยวกับชุดโปรแกรมจำลองในเครื่องด้วย
เริ่มต้น Cloud Firestore
เริ่มต้นอินสแตนซ์ของ Cloud Firestore
Web
import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore"; // TODO: Replace the following with your app's Firebase project configuration // See: https://support.google.com/firebase/answer/7015592 const firebaseConfig = { FIREBASE_CONFIGURATION }; // Initialize Firebase const app = initializeApp(firebaseConfig); // Initialize Cloud Firestore and get a reference to the service const db = getFirestore(app);
แทนที่ FIREBASE_CONFIGURATION ด้วย firebaseConfig
ของเว็บแอป
หากต้องการคงข้อมูลไว้เมื่ออุปกรณ์ขาดการเชื่อมต่อ โปรดดูเอกสารประกอบเปิดใช้ข้อมูลออฟไลน์
Web
import firebase from "firebase/app"; import "firebase/firestore"; // TODO: Replace the following with your app's Firebase project configuration // See: https://support.google.com/firebase/answer/7015592 const firebaseConfig = { FIREBASE_CONFIGURATION }; // Initialize Firebase firebase.initializeApp(firebaseConfig); // Initialize Cloud Firestore and get a reference to the service const db = firebase.firestore();
แทนที่ FIREBASE_CONFIGURATION ด้วย firebaseConfig
ของเว็บแอป
หากต้องการคงข้อมูลไว้เมื่ออุปกรณ์ขาดการเชื่อมต่อ โปรดดูเอกสารประกอบเปิดใช้ข้อมูลออฟไลน์
รวดเร็ว
import FirebaseCore import FirebaseFirestore
FirebaseApp.configure() let db = Firestore.firestore()
Objective-C
@import FirebaseCore; @import FirebaseFirestore; // Use Firebase library to configure APIs [FIRApp configure];
FIRFirestore *defaultFirestore = [FIRFirestore firestore];
Kotlin+KTX
// Access a Cloud Firestore instance from your Activity
val db = Firebase.firestore
Java
// Access a Cloud Firestore instance from your Activity
FirebaseFirestore db = FirebaseFirestore.getInstance();
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 และผู้ดูแลระบบ > บัญชีบริการในคอนโซล 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();
Python
Cloud Firestore SDK เริ่มต้นในรูปแบบต่างๆ ขึ้นอยู่กับสภาพแวดล้อม โดยวิธีการที่ใช้กันมากที่สุดมีดังนี้ ดูข้อมูลอ้างอิงที่สมบูรณ์ได้ที่เริ่มต้น Admin SDKimport 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()
Python
Cloud Firestore SDK เริ่มต้นในรูปแบบต่างๆ ขึ้นอยู่กับสภาพแวดล้อม โดยวิธีการที่ใช้กันมากที่สุดมีดังนี้ ดูข้อมูลอ้างอิงที่สมบูรณ์ได้ที่เริ่มต้น Admin SDKimport firebase_admin from firebase_admin import firestore_async # Application Default credentials are automatically created. app = firebase_admin.initialize_app() db = firestore_async.client()
คุณใช้ข้อมูลเข้าสู่ระบบเริ่มต้นที่มีอยู่ของแอปพลิเคชันเพื่อเริ่ม SDK ได้ด้วย
import firebase_admin from firebase_admin import credentials from firebase_admin import firestore_async # Use the application default credentials. cred = credentials.ApplicationDefault() firebase_admin.initialize_app(cred) db = firestore_async.client()
หากต้องการใช้ Firebase Admin SDK ในเซิร์ฟเวอร์ของคุณเอง ให้ใช้บัญชีบริการ
ไปที่ IAM และผู้ดูแลระบบ > บัญชีบริการในคอนโซล Google Cloud สร้างคีย์ส่วนตัวใหม่และบันทึกไฟล์ JSON จากนั้นใช้ไฟล์เพื่อเริ่มต้น SDK โดยทำดังนี้
import firebase_admin from firebase_admin import credentials from firebase_admin import firestore_async # Use a service account. cred = credentials.Certificate('path/to/serviceAccount.json') app = firebase_admin.initialize_app(cred) db = firestore_async.client()
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, 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();
Go
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 และผู้ดูแลระบบ > บัญชีบริการในคอนโซล Google Cloud สร้างคีย์ส่วนตัวใหม่และบันทึกไฟล์ 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
PHP
ดูข้อมูลเพิ่มเติมเกี่ยวกับการติดตั้งและสร้างไคลเอ็นต์ Cloud Firestore ได้ที่ไลบรารีของไคลเอ็นต์ Cloud Firestore
Unity
using Firebase.Firestore; using Firebase.Extensions;
FirebaseFirestore db = FirebaseFirestore.DefaultInstance;
C#
C#
ดูข้อมูลเพิ่มเติมเกี่ยวกับการติดตั้งและสร้างไคลเอ็นต์ Cloud Firestore ได้ที่ไลบรารีของไคลเอ็นต์ Cloud Firestore
Ruby
เพิ่มข้อมูล
Cloud Firestore จัดเก็บข้อมูลในเอกสาร ซึ่งจัดเก็บไว้ในคอลเล็กชัน Cloud Firestore สร้างคอลเล็กชันและเอกสารโดยปริยาย ในครั้งแรกที่คุณเพิ่มข้อมูลในเอกสาร คุณไม่จำเป็นต้องสร้างคอลเล็กชันหรือเอกสารอย่างชัดเจน
สร้างคอลเล็กชันใหม่และเอกสารโดยใช้โค้ดตัวอย่างต่อไปนี้
Web
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
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 do { let ref = try await db.collection("users").addDocument(data: [ "first": "Ada", "last": "Lovelace", "born": 1815 ]) print("Document added with ID: \(ref.documentID)") } catch { print("Error adding document: \(error)") }
Objective-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); } }];
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) }
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); } });
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
Go
PHP
PHP
ดูข้อมูลเพิ่มเติมเกี่ยวกับการติดตั้งและสร้างไคลเอ็นต์ Cloud Firestore ได้ที่ไลบรารีของไคลเอ็นต์ Cloud Firestore
Unity
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."); });
C#
Ruby
ตอนนี้ให้เพิ่มเอกสารอื่นในคอลเล็กชัน users
โปรดสังเกตว่าเอกสารนี้มีคู่คีย์-ค่า (ชื่อกลาง) ที่ไม่ปรากฏในเอกสารแรก เอกสารในคอลเล็กชันอาจมีชุดข้อมูลที่แตกต่างกัน
Web
// 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
// 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. do { let ref = try await db.collection("users").addDocument(data: [ "first": "Alan", "middle": "Mathison", "last": "Turing", "born": 1912 ]) print("Document added with ID: \(ref.documentID)") } catch { print("Error adding document: \(error)") }
Objective-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); } }];
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) }
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); } });
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
Go
PHP
PHP
ดูข้อมูลเพิ่มเติมเกี่ยวกับการติดตั้งและสร้างไคลเอ็นต์ Cloud Firestore ได้ที่ไลบรารีของไคลเอ็นต์ Cloud Firestore
Unity
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."); });
C#
Ruby
อ่านข้อมูล
ใช้ผู้ดูข้อมูลในคอนโซล Firebase เพื่อยืนยันอย่างรวดเร็วว่าคุณได้เพิ่มข้อมูลลงใน Cloud Firestore แล้ว
คุณยังสามารถใช้เมธอด "get" เพื่อเรียกข้อมูลคอลเล็กชันทั้งหมดได้ด้วย
Web
import { collection, getDocs } from "firebase/firestore"; const querySnapshot = await getDocs(collection(db, "users")); querySnapshot.forEach((doc) => { console.log(`${doc.id} => ${doc.data()}`); });
Web
db.collection("users").get().then((querySnapshot) => { querySnapshot.forEach((doc) => { console.log(`${doc.id} => ${doc.data()}`); }); });
Swift
do { let snapshot = try await db.collection("users").getDocuments() for document in snapshot.documents { print("\(document.documentID) => \(document.data())") } } catch { print("Error getting documents: \(error)") }
Objective-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); } } }];
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) }
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()); } } });
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("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
Go
PHP
PHP
ดูข้อมูลเพิ่มเติมเกี่ยวกับการติดตั้งและสร้างไคลเอ็นต์ Cloud Firestore ได้ที่ไลบรารีของไคลเอ็นต์ Cloud Firestore
Unity
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."); });
C#
Ruby
รักษาความปลอดภัยให้ข้อมูลของคุณ
หากใช้ SDK สำหรับแพลตฟอร์มเว็บ, Android หรือ Apple ให้ใช้การตรวจสอบสิทธิ์ Firebase และกฎความปลอดภัยของ Cloud Firestore เพื่อรักษาความปลอดภัยให้ข้อมูลใน Cloud Firestore
ชุดกฎพื้นฐานที่คุณสามารถใช้เพื่อเริ่มต้นได้มีดังนี้ คุณจะแก้ไขกฎความปลอดภัยได้ในแท็บกฎของคอนโซล
ต้องมีการตรวจสอบสิทธิ์
// Allow read/write access to a document keyed by the user's UID
service cloud.firestore {
match /databases/{database}/documents {
match /users/{uid} {
allow read, write: if request.auth != null && request.auth.uid == uid;
}
}
}
โหมดล็อกขณะคุมสอบ
// Deny read/write access to all users under any conditions
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
}
}
ก่อนที่จะทำให้แอปบนเว็บ, Android หรือ iOS ใช้งานได้เป็นเวอร์ชันที่ใช้งานจริง ให้ทำตามขั้นตอนเพื่อให้แน่ใจว่ามีเพียงไคลเอ็นต์ของแอปเท่านั้นที่จะเข้าถึงข้อมูล Cloud Firestore ได้ ดูเอกสารประกอบเกี่ยวกับ App Check
หากคุณใช้ SDK เซิร์ฟเวอร์รายการใดรายการหนึ่ง ให้ใช้ Identity and Access Management (IAM) เพื่อรักษาความปลอดภัยข้อมูลใน Cloud Firestore
ดูวิดีโอบทแนะนำ
หากต้องการคำแนะนำโดยละเอียดเกี่ยวกับการเริ่มต้นใช้งานไลบรารีของไคลเอ็นต์ Cloud Firestore บนอุปกรณ์เคลื่อนที่ โปรดดูวิดีโอแนะนำข้อใดข้อหนึ่งต่อไปนี้
เว็บไซต์
iOS ขึ้นไป
Android
ดูวิดีโอเพิ่มเติมได้ในช่อง YouTube ของ Firebase
ขั้นตอนถัดไป
เพิ่มพูนความรู้ในหัวข้อต่อไปนี้
- Codelabs — ดูวิธีใช้ Cloud Firestore ในแอปจริงโดยไปที่ Codelab สำหรับ Android, iOS หรือเว็บ
- โมเดลข้อมูล — ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีจัดโครงสร้างข้อมูลใน Cloud Firestore รวมถึงข้อมูลตามลำดับชั้นและคอลเล็กชันย่อย
- เพิ่มข้อมูล — ดูข้อมูลเพิ่มเติมเกี่ยวกับการสร้างและอัปเดตข้อมูลใน Cloud Firestore
- รับข้อมูล — ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีดึงข้อมูล
- ค้นหาแบบง่ายและแบบผสม — ดูวิธีเรียกใช้การค้นหาแบบง่ายและแบบผสม
- เรียงลำดับและจำกัดการค้นหา ดูวิธีเรียงลำดับและจำกัดข้อมูลที่แสดงผลจากการค้นหา