Не могу найти файл .realm для просмотра в браузере областей и не вижу результата

Простите меня за такой глупый вопрос. Я пытаюсь использовать Realm DB для своего приложения, и я застрял в том, как увидеть мою базу данных в браузере Realm. Также я попытался увидеть путь и найти его в своих файлах. Я не нашел никакого файла области. как мне это сделать? Также мне интересно увидеть мой набор результатов и запросы, с которыми у меня сейчас проблемы. вот код .. Я открыт для предложений и лучших практик реализации. Также лучше сделать отдельный файл схемы и отдельный файл, в котором я инициализирую свою схему..? Не могу увидеть результаты моего фильтра.

const testScema = {
  name: 'profile',
  properties: {
    name: 'string',
    age: 'int',
    sport: 'string',
  }
};

let realmObj = new realm({schema: [testScema]});

export default class test extends Component {
  constructor(props){
    super(props);
    this.state = {
      name: '',
      sport: '',
      age: '',
    }
  }

  insert(){
    var age = parseInt(this.state.age);
    realmObj.write(() => {
      let myProf = realmObj.create('profile',{
        name: this.state.name,
        age: age,
        sport: this.state.sport,
      });
    });
    let allProfiles = realmObj.objects('profile');
    let filterRes = allProfiles.filtered('name BEGINSWITH "h"');
    this.refs.name.setNativeProps({text: ''});
    this.refs.age.setNativeProps({text: ''});
    this.refs.sport.setNativeProps({text: ''});
    console.log("filter result", filterRes);
    console.log("items in db", realmObj.objects('profile').length);
  }

  delete(){
    let allProfiles = realmObj.objects('profile');
    realmObj.write(() => {
    realmObj.delete(allProfiles);
    });
  }

  render() {
   return (
     <View>
      <Text>For Realm testing</Text>
      <View style={{flexDirection: 'row'}}>
        <Text style={{flex: 1}}>Enter Name: </Text>
        <TextInput ref="name" onChangeText={(name) => this.setState({name})} style={{flex: 1}}/>
      </View>
      <View style={{flexDirection: 'row'}}>
        <Text style={{flex: 1}}>Enter Age: </Text>
        <TextInput ref="age" keyboardType="numeric" onChangeText={(age) => this.setState({age})} style={{flex: 1}}/>
      </View>
      <View style={{flexDirection: 'row'}}>
        <Text style={{flex: 1}}>Enter Favourite Sport: </Text>
        <TextInput ref="sport" onChangeText={(sport) => this.setState({sport})} style={{flex: 1}}/>
      </View>
      <View style={{flexDirection: 'row', justifyContent: 'space-around'}}>
        <Button style={{flex: 1}} title="INSERT" onPress={() => this.insert()}/>
        <Button style={{flex: 1}} title="DELETE" onPress={() => this.delete()}/>
      </View>
      <ListView
        dataSource={ds.cloneWithRows(realmObj.objects('profile'))}
        renderRow={(data) => <Text>{data.defaultPath}</Text>}/>
     </View>
   );
  }
}

person Y_J    schedule 24.03.2017    source источник


Ответы (1)


Если вы работаете на Android, вам нужно скопировать файл области из внутренней памяти вашего приложения и вставить его куда-нибудь на свой компьютер, а затем просмотреть файл с помощью браузера областей.

Вы можете найти файл области по пути data/data/$application_package_name/files.

Обновление: это отвечает на ваш вопрос. https://stackoverflow.com/a/28465803/1282812

person Kalpesh Patel    schedule 24.03.2017
comment
Спасибо за ответ ... но где мне найти файл во внутренней памяти моего телефона ... потому что в данных / данных / присутствует только кеш, который пуст ... это файл? каталог кеша - person Y_J; 24.03.2017
comment
Вам понадобится рутированный телефон. Если у вас нет рутированного телефона, вы можете установить свое приложение в эмуляторе, а затем получить доступ к файловой системе эмулятора с помощью монитора устройства Android. - person Kalpesh Patel; 24.03.2017
comment
так что, кроме того, что мой телефон рутирован, я не вижу файл .realm? кажется нелогичным - person Y_J; 24.03.2017
comment
Вы можете увидеть это на эмуляторе. - person Kalpesh Patel; 24.03.2017
comment
Что ж, спасибо, вы приложили столько усилий, чтобы объяснить мне это, но ... это все еще не решает мою проблему, потому что ... я использую React Native (javascript) ... не родной Android. так что я не думаю, что это сработает .. но все же я собираюсь попробовать. - person Y_J; 24.03.2017
comment
Да, я понимаю, но я думаю, что нативная библиотека в сфере реагирования будет использовать нативные API под капотом. - person Kalpesh Patel; 24.03.2017
comment
Вы пробовали на эмуляторе или телефоне? - person Kalpesh Patel; 24.03.2017
comment
да, мы можем предположить, что они могут использовать собственные API, но после извлечения я ничего не получил. Я пробовал это на своем телефоне (без рута). - person Y_J; 24.03.2017
comment
Вы не сможете получить содержимое внутренней памяти с помощью этой команды на нерутированном телефоне. Вам понадобится рутированный телефон или эмулятор. - person Kalpesh Patel; 24.03.2017
comment
поэтому при использовании устройства (без рута) я не могу просмотреть файл моей области? что, если я укажу собственный путь.. но он выдает ошибку, неспособную открыть область по случайному пути: mkdir_dir() не удалось... - person Y_J; 25.03.2017
comment
Вы также можете увидеть файл области с телефона, но вам придется написать код копирования файла, чтобы скопировать файл области и вставить его на внешний диск. Я не уверен, можете ли вы сделать то же самое на iOS или нет. Также вы не можете передать random path как путь к БД. это должен быть правильный путь к файлу. - person Kalpesh Patel; 25.03.2017
comment
слушайте .. я использовал эмулятор после того, как потратил много времени на то, чтобы увидеть его на телефоне .. и да, я могу видеть файл области и использовать его в своем браузере области, но он не меняется динамически. я посмотрю больше на это и как использовать его dynamcially. например, если я вставлю запись, она тоже изменится в браузере области. Все предложения приветствуются. @Каплеш Патель - person Y_J; 27.03.2017