ホームページ  >  記事  >  バックエンド開発  >  作成および更新されたタイムスタンプ フィールドを読み取るために Firestore への追加の往復が必要ですか?

作成および更新されたタイムスタンプ フィールドを読み取るために Firestore への追加の往復が必要ですか?

PHPz
PHPz転載
2024-02-11 18:36:091143ブラウズ

我是否需要额外往返 firestore 来读取创建和更新的时间戳字段?

Firestore を使用する場合、作成および更新されたタイムスタンプ フィールドを読み取るために追加のラウンドトリップが必要かどうか疑問に思うかもしれません。答えはいいえだ。 Firestore は各ドキュメントの作成および更新のタイムスタンプを自動的に提供し、これらのフィールドを参照することで対応する時間情報を取得できます。このようにすると、タイムスタンプ フィールドを読み取るために追加の操作が必要なくなり、ドキュメントの作成時刻と更新時刻をより簡単に取得できるようになります。この設計により、開発プロセスがより効率的かつ簡素化され、不要なコードやリクエストが回避されます。

質問内容

  1. わかりました。go には firestore を使用して ticket リソースを保存する rest API があります。このために私は次を使用します: firestore go client

  2. ドキュメントを 作成日/更新日 で並べ替えられるようにしたいので、ドキュメントに従って、これら 2 つのフィールドをタイムスタンプとしてドキュメントに保存します。

  3. 両方のフィールドで servertimestamp タグを使用します。これを行うと、値は Firestore サーバーがリクエストを処理するのにかかった時間になります。

  4. 更新操作の 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"
 }
}

Solution

私の理解が正しければ、DateUpdated フィールドはサーバー側のタイムスタンプです。つまり、その値は、値が決定されたときにサーバーによって書き込まれることを意味します。ストレージ層に入るとき(いわゆるフィールド変換)。 Firestore SDK での書き込み操作は操作の結果データを返さないため、その値をアプリケーションに戻す唯一の方法は、実際には、書き込み後に追加の読み取り操作を実行して値を取得することです。

この読み取りは有料の操作であり、多くの場合必要ないため、SDK は自動的に実行しません。したがって、コードにその読み取りを実行させることで、このコストが発生するかどうかを決定できます。

以上が作成および更新されたタイムスタンプ フィールドを読み取るために Firestore への追加の往復が必要ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。