Firestore ウォッチ リスナーを作成する
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
Firestore ウォッチ リスナーを作成する
もっと見る
このコードサンプルを含む詳細なドキュメントについては、以下をご覧ください。
コードサンプル
C#
Firestore に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
Firestore に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Firestore に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Firestore に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Firestore に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Ruby
Firestore に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["わかりにくい","hardToUnderstand","thumb-down"],["情報またはサンプルコードが不正確","incorrectInformationOrSampleCode","thumb-down"],["必要な情報 / サンプルがない","missingTheInformationSamplesINeed","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["その他","otherDown","thumb-down"]],[],[[["\u003cp\u003eThis content demonstrates how to create a Firestore watch listener to receive real-time updates for a specific document.\u003c/p\u003e\n"],["\u003cp\u003eCode samples are provided in C#, Go, Java, Node.js, Python, and Ruby to illustrate the implementation of Firestore listeners.\u003c/p\u003e\n"],["\u003cp\u003eEach language example includes instructions for setting up Application Default Credentials for authentication to Firestore.\u003c/p\u003e\n"],["\u003cp\u003eThe examples show how to listen for document snapshots and handle received data or identify if the document no longer exists.\u003c/p\u003e\n"],["\u003cp\u003eFurther documentation and resources, including the Google Cloud sample browser, are referenced for expanding on the topic.\u003c/p\u003e\n"]]],[],null,["# Create a Firestore watch listener\n\nExplore further\n---------------\n\n\nFor detailed documentation that includes this code sample, see the following:\n\n- [Get real-time updates](/firestore/native/docs/query-data/listen)\n- [Get realtime updates with Cloud Firestore](https://firebase.google.com/docs/firestore/query-data/listen)\n\nCode sample\n-----------\n\n### C#\n\n\nTo authenticate to Firestore, set up Application Default Credentials.\nFor more information, see\n\n[Set up authentication for a local development environment](/docs/authentication/set-up-adc-local-dev-environment).\n\n DocumentReference docRef = db.Collection(\"cities\").Document(\"SF\");\n FirestoreChangeListener listener = docRef.Listen(snapshot =\u003e\n {\n Console.WriteLine(\"Callback received document snapshot.\");\n Console.WriteLine(\"Document exists? {0}\", snapshot.Exists);\n if (snapshot.Exists)\n {\n Console.WriteLine(\"Document data for {0} document:\", snapshot.Id);\n Dictionary\u003cstring, object\u003e city = snapshot.ToDictionary();\n foreach (KeyValuePair\u003cstring, object\u003e pair in city)\n {\n Console.WriteLine(\"{0}: {1}\", pair.Key, pair.Value);\n }\n }\n });\n\n### Go\n\n\nTo authenticate to Firestore, set up Application Default Credentials.\nFor more information, see\n\n[Set up authentication for a local development environment](/docs/authentication/set-up-adc-local-dev-environment).\n\n import (\n \t\"context\"\n \t\"fmt\"\n \t\"io\"\n \t\"time\"\n\n \t\"cloud.google.com/go/firestore\"\n \t\"google.golang.org/grpc/codes\"\n \t\"google.golang.org/grpc/status\"\n )\n\n // listenDocument listens to a single document.\n func listenDocument(ctx context.Context, w io.Writer, projectID, collection string) error {\n \t// projectID := \"project-id\"\n \t// Сontext with timeout stops listening to changes.\n \tctx, cancel := context.WithTimeout(ctx, 30*time.Second)\n \tdefer cancel()\n\n \tclient, err := firestore.NewClient(ctx, projectID)\n \tif err != nil {\n \t\treturn fmt.Errorf(\"firestore.NewClient: %w\", err)\n \t}\n \tdefer client.Close()\n\n \tit := client.Collection(collection).Doc(\"SF\").Snapshots(ctx)\n \tfor {\n \t\tsnap, err := it.Next()\n \t\t// DeadlineExceeded will be returned when ctx is cancelled.\n \t\tif status.Code(err) == codes.DeadlineExceeded {\n \t\t\treturn nil\n \t\t}\n \t\tif err != nil {\n \t\t\treturn fmt.Errorf(\"Snapshots.Next: %w\", err)\n \t\t}\n \t\tif !snap.Exists() {\n \t\t\tfmt.Fprintf(w, \"Document no longer exists\\n\")\n \t\t\treturn nil\n \t\t}\n \t\tfmt.Fprintf(w, \"Received document snapshot: %v\\n\", ssnap.https://cloud.google.com/go/docs/reference/cloud.google.com/go/firestore/latest/index.html#cloud_google_com_go_firestore_DocumentSnapshot_Data))\n \t}\n }\n\n### Java\n\n\nTo authenticate to Firestore, set up Application Default Credentials.\nFor more information, see\n\n[Set up authentication for a local development environment](/docs/authentication/set-up-adc-local-dev-environment).\n\n DocumentReference docRef = db.collection(\"cities\").document(\"SF\");\n docRef.addSnapshotListener(\n new EventListener\u003cDocumentSnapshot\u003e() {\n @Override\n public void onEvent(@Nullable DocumentSnapshot snapshot, @Nullable FirestoreException e) {\n if (e != null) {\n System.err.println(\"Listen failed: \" + e);\n return;\n }\n\n if (snapshot != null && snapshot.exists()) {\n System.out.println(\"Current data: \" + snapshot.getData());\n } else {\n System.out.print(\"Current data: null\");\n }\n }\n });\n\n### Node.js\n\n\nTo authenticate to Firestore, set up Application Default Credentials.\nFor more information, see\n\n[Set up authentication for a local development environment](/docs/authentication/set-up-adc-local-dev-environment).\n\n const doc = db.collection('cities').doc('SF');\n\n const observer = doc.onSnapshot(docSnapshot =\u003e {\n console.log(`Received doc snapshot: ${docSnapshot}`);\n // ...\n }, err =\u003e {\n console.log(`Encountered error: ${err}`);\n });\n\n### Python\n\n\nTo authenticate to Firestore, set up Application Default Credentials.\nFor more information, see\n\n[Set up authentication for a local development environment](/docs/authentication/set-up-adc-local-dev-environment).\n\n\n # Create an Event for notifying main thread.\n callback_done = threading.Event()\n\n # Create a callback on_snapshot function to capture changes\n def on_snapshot(doc_snapshot, changes, read_time):\n for doc in doc_snapshot:\n print(f\"Received document snapshot: {doc.id}\")\n callback_done.set()\n\n doc_ref = db.collection(\"cities\").document(\"SF\")\n\n # Watch the document\n doc_watch = doc_ref.on_snapshot(on_snapshot)\n\n### Ruby\n\n\nTo authenticate to Firestore, set up Application Default Credentials.\nFor more information, see\n\n[Set up authentication for a local development environment](/docs/authentication/set-up-adc-local-dev-environment).\n\n doc_ref = firestore.col(collection_path).doc document_path\n snapshots = []\n\n # Watch the document.\n listener = doc_ref.listen do |snapshot|\n puts \"Received document snapshot: #{snapshot.document_id}\"\n snapshots \u003c\u003c snapshot\n end\n\nWhat's next\n-----------\n\n\nTo search and filter code samples for other Google Cloud products, see the\n[Google Cloud sample browser](/docs/samples?product=firestore)."]]