質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.44%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Next.js

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

Q&A

解決済

1回答

1073閲覧

Firestoreで祖先ドキュメントが存在しない状態になってしまう

nqf6nbs

総合スコア3

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Next.js

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

0グッド

0クリップ

投稿2023/01/14 05:48

編集2023/01/14 06:52

前提

Next.jsのアプリからFirestoreに書き込みを行なっています。
追加はできるものの、ドキュメント名がグレーの斜体になっており
「祖先ドキュメントが存在しない」状態になってしまいます。

実現したいこと

getDocumentsでデータを取得したい為、公式ガイドに記載のあった
「警告: 存在しない祖先ドキュメントは、Console に表示されている場合でも、クエリとスナップショットには表示されません。クエリ結果に含めるには、ドキュメントを作成する必要があります。」を実現したいのですが、
何が間違っているのかわからない状況です。

該当のソースコード

js

1export async function localData( 2 id: string, 3 data: any, 4 key: string 5): Promise<void> { 6 const db = getFirestore(); 7 const docRef = doc(db, "collectionName", id, "subCollectionName", key); 8 await setDoc(docRef, data, { 9 merge: true, 10 }); 11}

発生している問題・エラーメッセージ

下層は斜体になっておらず、最上位の「collectionName」直下に新規作成した
「id」というドキュメントのみが、グレーの斜体になっています。

試したこと

第三引数 {merge:true} を削除してみましたが、変化はありませんでした。

補足情報(FW/ツールのバージョンなど)

"firebase": "^9.9.4", "next": "12.2.5", "react": "^17.0.2", "@types/node": "18.7.15", "@types/react": "18.0.18", "@types/react-dom": "18.0.6",

アドバイスの程宜しくお願い致します。

追記

その後、新たに試したことで一応「斜体」の状態を脱することができました。
が、本当にこの記法でいいのか?という不安が残るので
一旦自己解決ではなく編集追記させていただきました。
※ご指摘が無いまま時間が経過しましたら、自己解決にて投稿致します。

js

1export async function localData( 2 id: string, 3 data: any, 4 key: string 5): Promise<void> { 6 const db = getFirestore(); 7 const docRef1 = doc(db, "collectionName", id); 8 await setDoc(docRef1, data, { 9 merge: true, 10 }); 11 const docRef2 = doc(db, "collectionName", id, "subCollectionName", key); 12 await setDoc(docRef2, data, { 13 merge: true, 14 }); 15}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nqf6nbs

2023/01/14 06:59

その後、新たに試したことで一応「斜体」の状態を脱することができました。 が、本当にこの記法でいいのか?という不安が残るので 一旦自己解決ではなく編集追記させていただきました。 ※ご指摘が無いまま時間が経過しましたら、自己解決にて投稿致します。
guest

回答1

0

自己解決

setDocを2回に分けて行う事で解決しました。

js

1export async function localData( 2 id: string, 3 data: any, 4 key: string 5): Promise<void> { 6 const db = getFirestore(); 7 const docRef1 = doc(db, "collectionName", id); 8 await setDoc(docRef1, data, { 9 merge: true, 10 }); 11 const docRef2 = doc(db, "collectionName", id, "subCollectionName", key); 12 await setDoc(docRef2, data, { 13 merge: true, 14 }); 15}

投稿2023/01/15 04:46

nqf6nbs

総合スコア3

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.44%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問