node.js — Открыть Realm-JS, определенный в другом .JS-файле

действия

saveRealm — это действие:

export function saveRealm( realm ) { return { type: types.SAVE_REALM, realm } } 

редуктор

это будет обработано в редукторе:

 export default function reducer(state = initialState, action = {}) { switch (action.type) { case types.SAVE_REALM: return Object.assign({}, state, { realm: action.realm }); //other actions default: return state; } 

Redux way

Если вы используете Redux, вы можете сначала сохранить экземпляр области в состояние приложения, чтобы они передали его любому компоненту через реквизиты из состояния. РЕДАКТИРОВАТЬ: В конце результат очень похож, но вы добавляете больше кода котельной пластины для сохранения области в магазине.

Без Redux (рекомендуется)

Этот способ я рекомендую использовать, даже если вы используете Redux в своем приложении.

Создание схемы и области происходит в файле realm.js, который впоследствии импортируется в любое место, куда вам нужно в вашем коде.

Файл realm.js выглядит следующим образом (с двумя примерами схем):

 import Realm from 'realm'; class Favorite extends Realm.Object {} Favorite.schema = { name: 'Favorite', primaryKey: 'id', properties: { id: 'string', type: 'string', favorite: 'bool', alert: 'bool', tag: 'string', artistId: 'int' } }; class Friend extends Realm.Object {} Friend.schema = { name: 'Friend', primaryKey: 'fbId', properties: { name: 'string', fbId:'string', email: 'string', foto: 'string', concerts: 'int[]', artists: 'int[]' } }; var schemasArray = [ Favorite, Friend export default new Realm({schema: schemasArray}); 

тогда из любого компонента или файла в вашем приложении вы можете просто сделать:

 import realm from './realm' 

и используйте его как в документации по области:

 try { if(realm){ realm.write(() ={amp}gt; { //delete all objects first var allFavorites = realm.objects('Favorite') realm.delete(allFavorites) } catch (e) { console.log(`Error deleting favorites: ${schema} - ${e}`); reject() } 

Файл 1

 Realm.open({ schema: [Login] }) .then(realm ={amp}gt; { this.saveRealm( realm ) }); 

Файл 2

Наконец, в другом файле .js просто используйте сохраненный экземпляр области, не открывая его снова.

 this.props.realm.write(() ={amp}gt; { const isUser = this.props.realm.create('Login', { id: 1, token }, true); //rest of your code... }); 

Вам нужно будет использовать mapStateToProps как обычно:

 function mapStateToProps(state) { return { realm: state.realm, 

РЕДАКТИРОВАТЬ: Сделайте «Без Redux» рекомендуемый вариант. Добавьте больше кода примера кода к нему.

Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector