這就是我所做的遷移工作。
我有realm.js
位於/src
我在哪裏保留我所有的反應文件。當我需要使用我的領域我import realm from 'path/to/realm.js';
在realm.js
我有我的舊架構和我的新架構。
import Realm from 'realm';
const schema = {
name: 'mySchema',
properties: {
name: 'string',
}
};
const schemaV1 = {
name: 'mySchema',
properties: {
name: 'string',
otherName: 'string',
}
};
請注意它們具有相同的名稱。然後,在我曾經有export default new Realm({schema: [schema]});
我realm.js
的底部我現在有這樣的:
export default new Realm({
schema: [schemaV1],
schemaVersion: 1,
migration: (oldRealm, newRealm) => {
// only apply this change if upgrading to schemaVersion 1
if (oldRealm.schemaVersion < 1) {
const oldObjects = oldRealm.objects('schema');
const newObjects = newRealm.objects('schema');
// loop through all objects and set the name property in the new schema
for (let i = 0; i < oldObjects.length; i++) {
newObjects[i].otherName = 'otherName';
}
}
},
});
如果您不需要遷移數據,你可以只打開境界與新模式版本和新架構,它也應該工作。
您是否正在使用帶同步功能的Realm(Realm Mobile Platform)?或者你的用戶是你追蹤自己的東西? 通常情況下,你不會一直刪除你的領域文件,除非你正在使用它們進行緩存或類似的東西。 –
我只是將Realm javascript用於React Native。我的問題是,如果架構發生變化,您如何處理遷移?你到底在哪裏放置代碼?我並不總是需要執行遷移,刪除領域和重新初始化已經足夠,但似乎並不奏效。如果用戶在商店下載應用程序,然後我更新下一次更新的模式,會發生什麼?在重新安裝後,Realm數據庫會被刪除嗎?如果是這樣,那將起作用。如果沒有,那麼這將是一個問題。 – fes
查看文檔的[migrations](https://realm.io/docs/javascript/latest/#migrations)部分。這對你有幫助嗎? –