こんにちは。
株式会社エス・スリーのスタッフです。
弊社でも利用しているFirebase。
そのWebSDKの新しいバージョンが今年の8月にリリースされました。
コードのリファクタリングが必須となる大きな変更なので、なかなか手を付けられずにいましたが、
いずれは移行しなくてはなりません。
ファイルサイズもだいぶ小さくなるそうなのでWEBアプリの性能アップも見込めます。
幸い、互換ライブラリが提供されていて、徐々にリファクタリングを進めることができます。
基本的にはガイドに従えば大丈夫です。
といっても大きなWEBアプリだと結構な作業になります。
作業量を前にすると気持ちがくじけてしまいそうになりますが、心を無にして進めましょう。
そんなこんなで、弊社が運用しているWEBアプリも
少しずつモジュラースタイルへとリファクタリングを進めています。
その際、ちょっと詰まったところがありましたので今回の記事にしたいと思います。
やりたいことは、以下です。
「firestoreのあるコレクション(ここではmessage)のサブコレクションmembersにドキュメントIDを指定してドキュメントを追加したい」
サブコレクションのドキュメントIDを指定しない例はいくつか見つかるのですが、
ドキュメントIDを指定して追加する例が見つかりませんでした。
import { getFirestore, collection, doc as fdoc, setDoc } from "firebase/firestore";
let db = getFirestore();
let ref = fdoc(db, 'messages', [messageのドキュメントID], 'members', [サブコレクションの指定したいドキュメントID]);
await setDoc(ref,
{
userId: 'hogehoge',
userName: 'tarou',
})
ところで、弊社ではrealtime databaseも併用していますが、
importするときに「doc」がrealtime databaseにもfirestoreにもあるのがどうもスッキリしません。
(ついでに言えばqueryも…)
参考になりそうな例が見つからないのですが、皆さんどうされているのでしょうか。
上記は安易に名前を変えてimportしています。
最後までお読みいただき、ありがとうございました。