それらはそのままです-もう存在しないプロパティはロード時に無視され(そして変更時に失われ)、欠落しているプロパティはnullとして返されます。
セットベースの操作を使用して、データをオブジェクトモデルとチェックすることをお勧めします。
ああ、私を見てください、私は今コンピューターを使っています!
基本的に、ドキュメントストアに移動すると、一部の機能が失われ、データベースに事前のスキーマが定義されており、そのスキーマと一致しないデータをアップロードしようとすると、ある程度の自由が得られることを認識できます。エラーが発生します。
ただし、ドキュメントにはすべて独自の構造(プロパティ名とプロパティ値を示すキーと値のペア)が含まれているという点で、スキーマレスと構造レスには違いがあることを認識することが重要です。
これは、コードを記述してデータを永続化するという「ただ乗り込む」要素全体に役立ちますが、コード構造の変更を簡単に回避できる場合は、すでに永続化されているデータとの調整が難しくなる可能性があります。
この時点で、いくつかの戦略が提示されます。
- データを永続化したら、構造を不変にし、クラスをバージョン管理します
- 構造の変更を許可しますが、セットベースの操作を使用して、新しい構造に一致するようにデータを更新します
- 構造の変更を許可し、データをロードする際の不整合に対処するためのコードを記述します
3つ目は、保守不可能なコードにつながるため、明らかに悪い考えです。イベントやその他のデータを保存しているだけの場合は、クラスのバージョン管理は機能しますが、ほとんどのシナリオにはあまり適していないため、真ん中のままです。オプション。
まさにそれを実行し、リレーショナルデータベースで先行スキーマを処理するときに従うのと同じ行に沿っていくつかの簡単なルールに従うことをお勧めします。
- VCSシステムを使用して、デプロイされたバージョン間の変更を判別します
- あるバージョンから別のバージョンにアップグレードする移行スクリプトを作成する
- プロパティの名前変更/削除に注意してください-ドキュメントを読み込んで保存すると、それらのプロパティが新しいドキュメントに存在しない場合、データが失われるためです。
等。
これがもっと役立つことを願っています:-)