Firestore を使用する場合、作成および更新されたタイムスタンプ フィールドを読み取るために追加のラウンドトリップが必要かどうか疑問に思うかもしれません。答えはいいえだ。 Firestore は各ドキュメントの作成および更新のタイムスタンプを自動的に提供し、これらのフィールドを参照することで対応する時間情報を取得できます。このようにすると、タイムスタンプ フィールドを読み取るために追加の操作が必要なくなり、ドキュメントの作成時刻と更新時刻をより簡単に取得できるようになります。この設計により、開発プロセスがより効率的かつ簡素化され、不要なコードやリクエストが回避されます。
わかりました。go
には firestore
を使用して ticket
リソースを保存する rest API
があります。このために私は次を使用します: firestore go client
ドキュメントを 作成日/更新日
で並べ替えられるようにしたいので、ドキュメントに従って、これら 2 つのフィールドをタイムスタンプとしてドキュメントに保存します。
両方のフィールドで servertimestamp
タグを使用します。これを行うと、値は Firestore サーバーがリクエストを処理するのにかかった時間になります。
更新操作の http 応答には、次の本文が含まれている必要があります:
これは、チケット文書を更新した後、更新された タイトルまたは価格
に加えて、date_updated
フィールドの値も更新する必要があることを意味します。
現在は機能していますが、私がコーディングしている方法がそれを行う方法であるかどうかに興味があります。コード例でわかるように、トランザクションを使用してチケットを更新します。更新されたチケットを再度読み取る以外に、dateupdated
フィールドの更新された値を取得する方法が見つかりません。
ドメイン エンティティは次のように定義されます:
リーリー作成と更新の観点から Firestore との通信をここに添付します:
{ "ticket": { "id": "af41766e-76ea-43b5-86c1-8ba382edd4dc", "title": "ticket updated title", "price": 9, "date_created": "2023-01-06 09:07:24", "date_updated": "2023-01-06 10:08:24" } }
私の理解が正しければ、DateUpdated
フィールドはサーバー側のタイムスタンプです。つまり、その値は、値が決定されたときにサーバーによって書き込まれることを意味します。ストレージ層に入るとき(いわゆるフィールド変換)。 Firestore SDK での書き込み操作は操作の結果データを返さないため、その値をアプリケーションに戻す唯一の方法は、実際には、書き込み後に追加の読み取り操作を実行して値を取得することです。
この読み取りは有料の操作であり、多くの場合必要ないため、SDK は自動的に実行しません。したがって、コードにその読み取りを実行させることで、このコストが発生するかどうかを決定できます。
以上が作成および更新されたタイムスタンプ フィールドを読み取るために Firestore への追加の往復が必要ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。