👯♀️
Firestoreでdefault以外のデータベースにデータの追加・取得・削除を行う[JavaScript]
TL;DR(要約)
ライブラリ初期化時の、getFirestore
でデータベース名を指定するだけ。
import { initializeApp } from "firebase/app";
import { getFirestore } from "firebase/firestore";
const firebaseConfig = { // 接続設定 };
// Initialize Firebase
const app = initializeApp(firebaseConfig);
// ↓ここでデータベース名指定
const db = getFirestore(app, "ここにデータベース名を入れる");
// (default)に接続するときは、指定する必要がない
const db = getFirestore(app);
はじめに
Firestoreで複数のデータベースを作成できます。
Firestoreで複数のデータベースを作成した際のデータ操作を行ってみましょう。
複数のデータベースを作る
蛇足ですが、データベースは管理画面から簡単に作れます。
ここでは、 multi-database-test
という名前のデータベースを作りました。
こちらにアクセスします。
JSからのアクセス
データベースにデータの追加・取得・削除を実行してみましょう。
packageを取得していない場合は取得
npm install firebase
Firestoreインスタン初期化時にデータベース名を指定し、あとはドキュメント通り各種操作が実行できます。
getFirestore(firebase_app, "(データベース名)");
プログラムの操作例は以下です。
import { initializeApp } from 'firebase/app';
import { getFirestore, doc, getDoc, setDoc, updateDoc, deleteDoc } from 'firebase/firestore/lite';
const firebaseConfig = {
// 接続設定
};
const firebase_app = initializeApp(firebaseConfig);
/*
* Firestore のデータベースを取得
* ここで、データベース名を指定する(今回の場合は "multi-database-test")
*/
const firestore_db = getFirestore(firebase_app, "multi-database-test");
// ドキュメントを取得してコンソールに出力
const main = async (db) => {
// 操作するコレクション名
const collection_name = "test_collection";
/*
* データ書き込み例
*
* ドキュメント"add_doc_test1" に {name: "hogehoge", comment: "fugafuga", state: 1} を保存
*/
const add_doc_name = "add_doc_test1";// 保存するドキュメント名
// 書き込み実行
await setDoc(doc(db, collection_name, add_doc_name), {
name: "hogehoge",
comment: "fugafuga",
state: 1
});
// ---
/*
* データ更新例(既存のフィールドはそのままに、新しいフィールドを追加する)
*
* ドキュメント"update_doc_test1" に {name: "hogehoge", comment: "fugafuga", state: 2} を保存
*/
const update_doc_name = "update_doc_test1";// 更新するドキュメント名
await updateDoc(doc(db, collection_name, update_doc_name), {
name: "hogehoge",
comment: "fugafuga",
state: 2
});
// ---
/*
* データ読み取り例
*
* ドキュメント"read_doc_test1" の内容を取得
*/
const read_doc_name = "read_doc_test1";// 取得対象のドキュメント名
// 取得実行
const doc_snap = await getDoc( doc(db, collection_name, read_doc_name) );
// 取得内容をコンソールに出力
if (doc_snap.exists()) {
const data_obj = doc_snap.data();
const data_json_string = JSON.stringify(data_obj);
console.log(`Document data:${data_json_string}`);
}else{
console.log("No such document!");
}
// ---
/*
* データ削除例
*
* ドキュメント"del_doc_test1" の内容を削除
*/
const del_doc_name = "del_doc_test1";// 削除するドキュメント名
// 削除実行
await deleteDoc( doc(db, collection_name, del_doc_name) );
}
main(firestore_db);
おまけ:サーバサイド
サーバでNode JSを実行する場合。
(Cloud Runやfunctionsで実行する場合は、"接続情報"は必要ない)
データベース"multi-database-test"に接続する例
firebase-admin/app
ライブラリを使用する場合
import記法の場合
import { initializeApp } from 'firebase-admin/app';
import { getFirestore } from 'firebase-admin/firestore';
const firebase_app = initializeApp();
const firestore_db = getFirestore(firebase_app, "multi-database-test");
require記法の場合
const { initializeApp } = require('firebase-admin/app');
const { getFirestore } = require('firebase-admin/firestore');
const firebase_app = initializeApp();
const firestore_db = getFirestore(firebase_app, "multi-database-test");
@google-cloud/firestore
ライブラリを使用する場合
import記法の場合
import { Firestore } from '@google-cloud/firestore';
const firestore = new Firestore({"databaseId" : "multi-database-test"});
require記法の場合
const Firestore = require('@google-cloud/firestore');
const firestore = new Firestore({"databaseId" : "multi-database-test"});
おわり。
Discussion