Referensi perintah Firebase CLI untuk Data Connect

CLI Firebase adalah alat yang memungkinkan Anda mengelola dan mengonfigurasi produk dan layanan Firebase dari command line.

CLI menyediakan perintah yang dapat digunakan untuk melakukan berbagai tugas Data Connect, seperti membuat project Data Connect baru, menginisialisasi direktori kerja lokal yang sesuai, menyiapkan emulator Data Connect, mencantumkan resource Data Connect, membuat SDK klien, dan lainnya.

Perintah penyiapan

Menambahkan Data Connect ke project Firebase

firebase init

Gunakan firebase init untuk menyiapkan konfigurasi project lokal baru. Alur kerja ini membuat atau mengupdate file konfigurasi Firebase di direktori Anda.

firebase init

Alur firebase init memandu Anda menyiapkan layanan dan database, serta secara opsional menginstal emulator Data Connect dan mengonfigurasi SDK yang dihasilkan.

Penyiapan layanan dan database

Jika Anda memilih dataconnect untuk penyiapan produk, CLI akan meminta Anda memasukkan nama dan lokasi layanan baru, serta apakah akan menautkan instance Cloud SQL for PostgreSQL yang ada atau membuat instance baru.

Jika instance yang ada ditautkan, CLI akan memeriksa setelan yang kompatibel, seperti autentikasi IAM dan alamat IP publik.

Penyiapan Local Emulator Suite

Alur CLI menawarkan penyiapan emulator, termasuk emulator Data Connect.

Perintah emulator Data Connect

Mulai emulator Data Connect

emulators:start/exec

firebase emulators:start/exec

Gunakan emulator Data Connect versi Local Emulator Suite dalam mode interaktif dengan start atau mode non-interaktif yang didorong skrip dengan exec.

Mengekspor dan mengimpor data PostgreSQL lokal

Untuk mendukung pembuatan prototipe dan pengujian lokal, serta integrasi berkelanjutan, Anda dapat mengekspor data yang disimpan dalam instance database lokal dan mengimpornya di antara iterasi pengembangan dan pengujian.

Ekspor disimpan sebagai snapshot database PostgreSQL lokal Anda.

Data Connect menawarkan tiga pendekatan untuk mengekspor/mengimpor:

  • Ekspor/impor otomatis yang dikonfigurasi di firebase.json Anda untuk menyediakan cadangan snapshot saat emulator dimatikan dan dimulai
  • Ekspor/impor manual menggunakan CLI
  • Ekspor/impor manual menggunakan antarmuka ekstensi VS Code

Ekspor dan impor otomatis dikonfigurasi di firebase.json Anda

Untuk mencadangkan data di antara sesi pengembangan, tentukan lokasi pencadangan otomatis selama urutan firebase init. Lokasi ini disimpan di firebase.json Anda di kolom emulators.dataconnect.dataDir. Setiap perubahan data yang Anda buat akan otomatis disimpan di sini di antara eksekusi emulator, sehingga berguna selama pengujian dan eksplorasi lokal.

Ekspor manual: emulators:export dan emulators:start/exec --import

Saat emulator Data Connect berjalan, di terminal terpisah, jalankan perintah firebase emulators:export untuk menyimpan snapshot data Anda. Kemudian, Anda dapat memulai emulator dari snapshot tersebut menggunakan flag --import.

# Export data from local emulator from a separate terminal
firebase emulators:export --only dataconnect <export_directory>

# Import data from local directory, here using emulators:exec
firebase emulators:exec ./<your-test-script>.sh --only dataconnect --import <import_directory>

Ekspor/impor manual: Ekstensi VS Code

Di UI ekstensi VS Code, saat emulator berjalan, gunakan tombol Ekspor data emulator untuk mengekspor data guna mengekspor konten database saat ini. Lokasi ekspor default adalah direktori exportedData di root direktori project Anda.

Anda dapat mengimpor data ini menggunakan CLI, seperti yang dijelaskan di bagian sebelumnya. Anda juga dapat mengimpor data ini sebelum memulai emulator melalui VS Code dengan mengklik link Configure emulator dan menyetel Import Path.

Perintah pengelolaan skema dan konektor

Bagian ini berisi informasi referensi CLI untuk perintah yang Anda gunakan untuk mengelola skema dan konektor.

Untuk kasus penggunaan dan praktik yang direkomendasikan terkait perintah ini, lihat panduan pengelolaan skema dan konektor.

Men-deploy skema dan konektor

deploy

firebase deploy

Perintah ini men-deploy resource untuk layanan Data Connect yang diindeks di firebase.json. Migrasi skema dan update konektor dilakukan jika diperlukan.

Perintah Deskripsi

firebase deploy

Flag Deskripsi

–-only dataconnect

Deploy skema dan konektor untuk semua layanan Data Connect untuk project ini, tetapi jangan deploy resource produk Firebase lainnya.

–-only dataconnect:serviceId

Deploy skema dan konektor untuk layanan Data Connect yang ditentukan.

–-only dataconnect:serviceId:connectorId

Men-deploy satu konektor untuk layanan Data Connect yang ditentukan.

–-only dataconnect:serviceId:schema

Deploy skema untuk layanan Data Connect yang ditentukan.

Dengan tanda –-only, Anda dapat meneruskan nilai yang dipisahkan koma untuk men-deploy subset resource yang Anda inginkan.

firebase deploy --only dataconnect:service1:schema,dataconnect:service2

Mencantumkan layanan, skema, dan konektor Data Connect

dataconnect:services:list

firebase dataconnect:services:list

Perintah ini mencetak info dasar tentang layanan, skema, dan konektor yang di-deploy di project.

Membandingkan dan memigrasikan skema SQL

Saat Anda menjalankan firebase deploy, CLI akan melakukan perbandingan skema SQL sebelum men-deploy update. Anda juga dapat melakukan perbandingan dan update secara langsung dengan serangkaian perintah dataconnect:sql.

dataconnect:sql:diff

firebase dataconnect:sql:diff

Perintah ini membandingkan skema lokal untuk layanan dengan skema saat ini dari database Cloud SQL yang sesuai. Perintah yang akan dijalankan untuk memigrasikan database ke skema baru Anda akan dicetak.

Perintah Deskripsi

firebase dataconnect:sql:diff

Tombol/Parameter Deskripsi

serviceId

Tentukan layanan. Jika dihilangkan, cetak perbedaan untuk semua layanan di firebase.json.

dataconnect:sql:migrate

firebase dataconnect:sql:migrate

Perintah ini menerapkan perubahan skema lokal ke database Cloud SQL layanan.

Saat Anda menyiapkan project Data Connect lokal baru, dengan file dataconnect.yaml default, perilaku perintah dataconnect:sql:migrate adalah meminta Anda melakukan perubahan yang diperlukan, lalu meminta perubahan opsional, sebelum menjalankan perubahan. Anda dapat mengubah perilaku ini agar selalu menyertakan atau mengabaikan perubahan opsional dengan memperbarui konfigurasi dataconnect.yaml, seperti yang dibahas dalam memigrasikan skema dalam mode ketat atau kompatibel

Di lingkungan interaktif, CLI menampilkan setiap pernyataan SQL migrasi (dan apakah pernyataan tersebut merusak) serta meminta perubahan yang ingin Anda terapkan. Meneruskan tanda --force sama dengan menyetujui semua perintah.

Di lingkungan noninteraktif:

  • Tanpa --force, hanya perubahan non-destruktif yang dilakukan. Jika ada perubahan yang merusak, CLI akan membatalkan tanpa melakukan perubahan.
  • Dengan --force, semua perubahan telah dilakukan. Jika perubahan ini mencakup perubahan yang merusak, perubahan tersebut akan dicetak dan Anda akan ditanya apakah ingin melanjutkan, kecuali jika tanda --force diberikan.
Perintah Deskripsi

firebase dataconnect:sql:migrate

Flag Deskripsi

serviceId

Memigrasikan database untuk layanan yang ditentukan. serviceId disimpulkan jika project Anda hanya memiliki satu layanan.

–-force

Menyetujui perintah secara otomatis.

Seperti flag --only lainnya, Anda dapat memberikan beberapa layanan yang dipisahkan dengan koma.

Memigrasikan skema dalam mode ketat atau kompatibel

Migrasi skema Data Connect memiliki dua mode validasi skema yang berbeda: ketat dan kompatibel. Validasi mode ketat mengharuskan skema database sama persis dengan skema aplikasi sebelum skema aplikasi dapat di-deploy. Validasi mode yang kompatibel mengharuskan skema database kompatibel dengan skema aplikasi, yang berarti elemen dalam database yang tidak digunakan oleh skema aplikasi Anda tidak dimodifikasi.

Mode validasi skema dan praktik terbaik untuk migrasi skema ini dibahas dalam panduan pengelolaan skema dan konektor

Mode validasi ditentukan menggunakan kunci schemaValidation dalam file dataconnect.yaml. Jika schemaValidation tidak ditentukan, CLI akan menerapkan perubahan yang kompatibel dan meminta konfirmasi Anda sebelum menjalankan perubahan yang ketat. Lihat referensi konfigurasi.

Mengelola perubahan pada konektor

Saat Anda menjalankan firebase deploy, CLI akan memulai update konektor yang berlaku. CLI menganalisis perubahan pada setiap konektor dan mengeluarkan serangkaian pesan penilaian terkait perubahan konektor yang dapat menyebabkan perilaku yang tidak terduga (pesan berada di tingkat peringatan) atau kerusakan (pesan berada di tingkat kerusakan) dalam versi kode klien sebelumnya.

Penilaian dampak Skenario
Tingkat peringatan (kompatibel dengan kabel, dapat mengubah perilaku)
  • Menghapus kolom nullable dari kueri tanpa anotasi @retired.
Perubahan tingkat berat (kabel tidak kompatibel, dapat merusak klien)
  • Mengubah variabel nullable menjadi non-null tanpa nilai default.
  • Mengubah jenis data kolom menjadi sesuatu yang kompatibel dengan JSON (misalnya, Int menjadi Float).
  • Mengubah kolom non-null menjadi nullable.
  • Menghapus variabel nullable tanpa anotasi @retired.
  • Menghapus variabel non-null dengan nilai default tanpa anotasi @retired.
Tingkat kerusakan (kabel tidak kompatibel, akan merusak klien)
  • Menghapus operasi tanpa anotasi @retired.
  • Menghapus kolom non-null dari kueri tanpa anotasi @retired.
  • Menambahkan variabel non-null tanpa nilai default.
  • Mengubah jenis data kolom menjadi sesuatu yang tidak kompatibel (misalnya, String menjadi Int).
  • Menghapus variabel non-null tanpa nilai default dan tanpa anotasi @retired.

Di lingkungan interaktif, CLI menampilkan setiap penilaian konektor dan meminta perubahan yang ingin Anda terapkan. Meneruskan tanda --force sama dengan menyetujui semua penilaian.

Di lingkungan noninteraktif:

  • Jika hanya terjadi penilaian tingkat peringatan (kemungkinan perubahan perilaku), semua konektor akan di-deploy dan peringatan akan dicatat ke terminal.
  • Jika ada penilaian tingkat kerusakan, tidak ada konektor yang akan di-deploy dan peringatan akan dicatat ke terminal. Anda dapat mengganti dengan tanda --force.

Kode otorisasi audit

Data Connect membantu Anda mengaudit strategi otorisasi dengan menganalisis kode konektor saat Anda men-deploy ke server menggunakan firebase deploy dari Firebase CLI. Anda dapat menggunakan audit ini untuk membantu meninjau codebase.

Saat Anda men-deploy konektor, CLI akan menampilkan penilaian untuk kode operasi yang ada, diubah, dan baru di konektor Anda.

Untuk operasi yang diubah dan baru, CLI akan mengeluarkan peringatan dan meminta konfirmasi saat Anda menggunakan tingkat akses tertentu dalam operasi baru, atau saat Anda mengubah operasi yang ada untuk menggunakan tingkat akses tersebut.

Peringatan dan perintah selalu muncul untuk:

  • PUBLIC

Selain itu, peringatan dan perintah muncul di tingkat akses berikut saat Anda tidak menambahkannya dengan filter menggunakan auth.uid:

  • USER
  • USER_ANON
  • USER_EMAIL_VERIFIED

Untuk mengetahui informasi selengkapnya tentang otorisasi, lihat panduan otorisasi dan pengesahan.

Perintah SDK

Membuat SDK

dataconnect:sdk:generate

firebase dataconnect:sdk:generate

Perintah ini menghasilkan SDK berjenis yang dideklarasikan di connector.yaml.

Lihat juga panduan untuk menggunakan SDK web, SDK Android, dan SDK iOS.

Perintah Deskripsi

firebase dataconnect:sdk:generate

Flag Deskripsi

–-tonton

Membuat proses tetap berjalan dan menghasilkan SDK baru setiap kali Anda menyimpan perubahan pada file GQL skema dan konektor.

Jika pembuatan gagal, error akan dicetak ke stdout, kode yang dihasilkan tidak akan diubah, dan perintah akan terus berjalan.

–-only connectorId:platform

Hanya buat SDK untuk satu platform dan satu konektor.

Dengan tanda –only, Anda dapat meneruskan nilai yang dipisahkan koma.

firebase dataconnect:sdk:generate –-only connector1, connector1:kotlin

Perintah pengelolaan Cloud SQL

Memberikan peran SQL untuk Cloud SQL

Data Connect beroperasi di atas instance PostgreSQL Anda sendiri yang dihosting di Cloud SQL. Perintah peran SQL membantu Anda mengelola izin pada tabel database.

dataconnect:sql:setup

firebase dataconnect:sql:setup

Perintah ini mengonfigurasi izin global awal ke tabel di database Anda.

Alur penyediaan dan pengelolaan database default mengasumsikan bahwa project Anda menggunakan database baru (greenfield), dan saat Anda memanggil firebase deploy, Data Connect akan menampilkan perubahan skema database yang akan dilakukan dan melakukan migrasi apa pun setelah Anda menyetujui. Jika ini adalah alur yang Anda inginkan, dataconnect:sql:setup akan meminta Anda untuk memberikan izin, termasuk kepemilikan skema superuser.

Untuk database yang sudah ada (brownfield), Anda mungkin memiliki alur kerja sendiri untuk memigrasikan skema dan ingin mempertahankan kepemilikan skema sendiri. Jika ini adalah alur yang Anda inginkan, pastikan untuk menolak di perintah dataconnect:sql:setup apakah Data Connect harus menangani migrasi SQL untuk Anda. Sebagai akibat dari penolakan, Data Connect hanya akan mengambil akses read dan write ke tabel database Anda, tetapi kepemilikan dan migrasi skema akan tetap menjadi tanggung jawab Anda.

Untuk mengetahui pembahasan dan kasus penggunaan selengkapnya, lihat Mengelola layanan dan database.

dataconnect:sql:grant

firebase dataconnect:sql:grant

Dalam beberapa kasus, Anda mungkin ingin mengakses database secara langsung untuk membuat kueri atau memperbarui data yang dihasilkan oleh aplikasi Data Connect. Untuk melakukannya, Anda harus memberikan salah satu peran yang ditentukan di bagian ini kepada pengguna atau akun layanan yang diperlukan.

Untuk mengetahui detail tentang peran yang diberikan, lihat Peran pengguna PostgreSQL.

Peran Peran SQL Izin Penggunaan Dapat diberikan
pembaca firebasereader_<db_name>_<schema_name> Akses baca saja ke database.

Dapat melakukan operasi SELECT pada semua tabel dalam skema yang ditentukan.
Ideal untuk pengguna atau layanan yang memerlukan pengambilan data, tetapi tidak memerlukan modifikasi. Ya
penulis firebasewriter_<db_name>_<schema_name> Akses baca dan tulis ke database.

Dapat melakukan operasi SELECT, INSERT, UPDATE, DELETE, dan TRUNCATE pada semua tabel dalam skema.
Cocok untuk pengguna atau layanan yang perlu mengubah data dalam database. Ya
owner firebaseowner_<db_name>_<schema_name> Pemilik skema.

Memiliki semua hak istimewa pada semua tabel dan urutan dalam skema.
Peran ini, bersama dengan peran IAM roles/cloudsql.client, memberikan izin untuk melakukan migrasi pada database.

Misalnya, saat memanggil firebase dataconnect:sql:migrate.
Ya
superuser cloudsqlsuperuser Peran superuser bawaan dengan hak istimewa penuh di database.

Selain izin pemilik, peran ini dapat membuat skema, menghapus skema, menginstal ekstensi, dan melakukan tugas administratif lainnya.

Diakses di CLI dengan login sebagai "firebasesuperuser".
Diperlukan untuk menginstal ekstensi, membuat skema awal, dan memberikan peran SQL yang dapat diberikan kepada pengguna lain.

Jika pengguna non-admin memerlukan hak istimewa superuser, migrasi akan gagal dan meminta pengguna untuk meminta administrator database (yaitu, pengguna dengan roles/cloudsql.admin) untuk menjalankan perintah SQL yang memiliki hak istimewa.
Diberikan kepada pengguna dengan roles/cloudsql.admin dan tidak dapat diberikan secara langsung dari CLI Firebase
Perintah Deskripsi

firebase dataconnect:sql:grant

Tombol/Parameter Deskripsi

-R, --role role

Peran SQL yang akan diberikan, salah satunya: pemilik, penulis, atau pembaca.

-E, --email email_address

Email untuk pengguna atau akun layanan yang akan diberi peran.

Opsi global

Opsi global berikut berlaku untuk semua perintah:

  • --json mengalihkan output CLI ke JSON untuk diuraikan oleh alat lain.
  • --noninteractive dan --interactive menggantikan, sesuai kebutuhan, deteksi otomatis lingkungan non-TTY.