TypeScriptでFirestoreにgetOrCreateをやる
Django REST Framework使った後だとgetOrCreateが欲しくなる。
実際はDocumentSnapshot.updateとかが便利すぎるので使い道はほぼ無い。
const db = firebase.firestore(); const fsGetOrCreate = (docPath: string, initialData: any): Promise<DocumentSnapshot> => { return new Promise(async (resolve, reject) => { const ref = db.doc(docPath); return ref.get() .then(async (snap) => { if (snap.exists) { resolve(snap); } else { await ref.create(initialData); const snap = await ref.get(); return resolve(snap); } }) .catch((error) => reject(error)); }); };