Как читать данные из БД области в реагировать на родной? - PullRequest
0 голосов
/ 07 июля 2019

Я следовал учебному пособию по realb db в программе реагировать на родной язык, и мне удалось создать, вставить, удалить данные из БД, но у меня возникли проблемы с чтением из базы данных.

Я всегда получаю один и тот же результат, который не разрешен и бесполезен.

Я много раз проверял свои коды, но не могу найти свою ошибку.

Вот мой код:

database.js

import Realm from 'realm';


export const HEART_QUEUE_SCHEMA = 'HeartQueue';

export const HeartQueueSchema = {
    name : HEART_QUEUE_SCHEMA,
    primaryKey : 'id',
    properties: {
        id : 'int', // primary key
        requestTime : {type : 'string', indexed: true}
    }
};

const databaseOptions = {
    path: 'mizWord.realm',
    schema : [HeartQueueSchema],
    schemaVersion : 0,
} 

export const insertToHeartQueue =  (item) => new Promise((resolve, reject) => {
    Realm.open(databaseOptions).then(realm => {
        realm.write(()=>{
            realm.create(HEART_QUEUE_SCHEMA, item);
            resolve(item);
        })
    }).catch((error) => reject(error));
});

export const updateHeartQueue =  (item) => new Promise((resolve, reject) => {
    Realm.open(databaseOptions).then(realm => {
        realm.write(()=>{
            let updatingRow = realm.objectForPrimaryKey(HEART_QUEUE_SCHEMA, item.id);
            updatingRow.requestTime = 'hello world';
            resolve();            
        })
    }).catch((error) => reject(error));
});

export const deleteHeartQueue =  (itemID) => new Promise((resolve, reject) => {
    Realm.open(databaseOptions).then(realm => {
        realm.write(()=>{
            let updatingRow = realm.objectForPrimaryKey(HEART_QUEUE_SCHEMA, itemID);
            realm.delete(updatingRow);
            resolve();            
        })
    }).catch((error) => reject(error));
});

export const deleteAllHeartQueue = () => new Promise((resolve, reject) => {
    Realm.open(databaseOptions).then(realm => {
        realm.write(()=>{
            let updatingRows = realm.objects(HEART_QUEUE_SCHEMA);
            realm.delete(updatingRows);
            resolve();            
        })
    }).catch((error) => reject(error));
});

export const getAllHeartQueue = () => new Promise((resolve, reject) => {
    Realm.open(databaseOptions).then(realm => {
        let allHeartsList = realm.objects(HEART_QUEUE_SCHEMA);
        resolve(allHeartsList);        
    }).catch((error) => reject(error));
});

export default new Realm(databaseOptions)


и вот мой файл app.js


import realm from './databases';
import {insertToHeartQueue, deleteHeartQueue, deleteAllHeartQueue, getAllHeartQueue} from './databases'

export default class App extends Component {

constructor(){
  super();
  this.state = {
    data : "test",
    time : 0,
    testDB : '',
    xxxz : []
  }
}

_readDB = () => {    
  getAllHeartQueue().then((allHeartsList)=>{   
    console.log('data',allHeartsList);
    this.setState({
      xxxz : allHeartsList
    })   
  }).catch((err)=>{
    alert(err)
  }); 

}

  render() {   
    console.log('state', this.state.xxxz)
    return (
      <View style={styles.container}>  
        <Text style={styles.welcome}>Welcome to React Native!</Text> 
        <Text style={styles.welcome}>{this.state.time}</Text>
        <View>                   
          <Button
            onPress={()=> this._readDB()}
            title="Ask for Data"
            color="#cc77v"
            accessibilityLabel="Learn more about this purple button"
          />          
          <View>            
          </View>
        </View> 
      </View>
    );
  }
}


бу Я всегда получаю это: Прокси-сервер {тип: "объект", необязательный: false, символ (область): 140510983537104, символ (id): 175,…}

1 Ответ

1 голос
/ 08 июля 2019

Попробуйте полюбить resolve() вне транзакций записи.

...