normalizrを使用してエンティティの親に関連するid/slugを割り当てるにはどうしたらいいですか?Normalizr - 親エンティティに関連するslug/idの生成方法
例:私は次のように私のスキーマを定義することができ
{
id: '12345',
firstName: 'John',
images: [
{
url: 'https://www.domain.com/image0',
name: 'image0'
},
{
url: 'https://www.domain.com/image1',
name: 'image1'
}
]
}
:ユーザー・コールのための
APIレスポンス
const image = new Schema('images');
const user = new Schema('users');
user.define({
images: arrayOf(image)
})
問題は、画像が持っていないということですid
プロパティであるため、id
プロパティを指定しない限り、normalizrはそれらを区別できません。もちろん、
const image = new Schema('images', { idAttribute: uuid.v4() });
のようなものを実行して、一意の識別子を生成することができます。
ユーザーの更新を受け取り、イメージの名前が更新されたとします。すべての正規化で一意の識別子を生成するため、既存のイメージを識別して更新することはできません。
私はどちらかのID /スラグ中12345-image0
、12345-image1
または別のプロパティなどのような(画像エンティティに親エンティティ(ユーザー)を参照する方法が必要です。
これを達成するための最適な方法だろう何?
の代わりに
cuid
NPMパッケージを使用することをお勧めします 'processStrategy'を使用すると、idフィールドに新しいオブジェクトを返すことができ、値を変異させる必要はありません。 – nathancahill'idAttribute'パラメータは返されたオブジェクトを参照していないので、元の' value'を参照します。それが私が元の価値を変えなければならなかった理由です。 (私が間違っていない限り、これを数回チェックしてみると思いますが、私もpaul armstrongで確認しました) –
正しいかもしれません、 'getId'関数は' processedEntity'ではなく、元の 'input'を参照しています:https: //github.com/paularmstrong/normalizr/blob/a20d535c0ddd21c95cf8498647fa8e060b5ed8a8/src/schemas/Entity.js#L61 – nathancahill