今日はRealmについて。
React Nativeお勉強中にRealmを使っていて、schemaを複数持ちたいな、と思った時、
どうやるのか、、非常に簡単で説明するまでもないですが、書きます。
勝手に書きます!笑
前提、JavaScript版です。
例によって、公式をご紹介
https://www.realm.io/jp/docs/javascript/latest/
で、早速やり方。
new realm({schema:[schema1,schema2]})
これで、shcema1、schema2が作成されます。
ね、簡単でしょ? 記事にするほどのことないでしょ?w
ちなみに、Realmは、1つのプロジェクトで1オブジェクトのみです。
つまり、realm.open、new realmは1度だけ。
Realmのshcemaというのは、他のデータベースでよく言うテーブルみたいなものです。
その中にプロパティを定義するんですが、このプロパティがカラムみたいな感じ。
例を出した方がわかりやすいですね。公式ページから参照。
const CarSchema = {
name: 'Car',
properties: {
make: 'string',
model: 'string',
miles: {type: 'int', default: 0},
}
};
これは、Carという名前のshemaを定義しております。
もっているプロパティが、make、model、milesで、それぞれ、’String’といった指定でデータ型を定義しています。
まぁ、Carテーブルにmake、model、milesというカラムを定義してる感じです。
で、これはあくまでも定義なので、作成自体は、
Realm.open({schema: [CarSchema]}).then(realm => {ほげほげ});
こんな感じだったり、
const realm = Realm.open({schema: [CarSchema]})
こんな感じでやります。
で、Carだけじゃなく車を所持しているPersonというschemaも作りたくなったら、
const CarSchema = {
name: 'Car',
properties: {
make: 'string',
model: 'string',
miles: {type: 'int', default: 0},
}
};
const PersonSchema = {
name: 'Person',
properties: {
name: 'string',
birthday: 'date',
cars: {type: 'list', objectType: 'Car'},
picture: {type: 'data', optional: true},
}
};
Realm.open({schema: [CarSchema, PersonSchema]}).then(realm => {ほげほげ});
こんな感じで2つ定義して作成してやるわけです。
もちろん
const realm = Realm.open({schema: [CarSchema, PersonSchema]})
これでもOKです。
また、上記の例の場合、PersonのcarsというプロパティにCarスキーマをobjectType: ‘Car’で定義してます。
つまり、PersonにCarをプロパティとして挿入する仕様です。
このように、schemaに別のschemaをネストすることも可能です。
もちろん、ネストさせずに、特に関連性がなくてもOKです。
どこのサイトもschemaをネストしてたので、最初、関連性を持たせないとダメなのかな? と誤解したので、別に必要ないよー、てことを伝えたようと思いましたw
といったところで、複数schemaの作成についてでした。
お疲れ様でしたー!