이것은 이전 작업을 수행하기 위해 수행 한 작업입니다.
나는 /src
에있는 realm.js
에 있으며 모든 반응 파일을 보관합니다. 내 영역을 사용해야 할 때 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';
}
}
},
});
, 당신은 새 스키마로 영역을 열 수 버전 및 새 스키마가 있어야하며 작동해야합니다.
렐름과 동기화 (렐름 모바일 플랫폼)를 사용하고 있습니까? 아니면 사용자가 자신을 추적하고있는 것입니까? 일반적으로 영역 파일을 캐싱 등에 사용하지 않는 한 항상 영역 파일을 삭제하지 않습니다. –
저는 React Native 용 Realm javascript를 사용하고 있습니다. 내 문제는 스키마가 변경되면 마이그레이션을 어떻게 처리 할 수 있는가하는 것입니다. 정확히 어디서 코드를 작성합니까? 항상 마이그레이션을 수행 할 필요는 없으며 영역을 삭제하고 다시 초기화하면 충분하지만 작동하지 않는 것 같습니다. 사용자가 상점에서 앱을 다운로드 한 후 다음 업데이트를 위해 스키마를 업데이트하면 어떻게됩니까? 다시 설치 한 후에 영역 데이터베이스가 제거됩니까? 그렇다면 작동 할 것입니다. 그렇지 않으면 문제가 될 것입니다. – fes
설명서의 [migrations] (https://realm.io/docs/javascript/latest/#migrations) 섹션을 확인하십시오. 그게 도움이 되니? –