react-native - 如何在本机反应中从领域数据库中读取数据?
问题描述
我在 react native 中遵循了一个领域数据库教程,我成功地从数据库中创建、插入、删除数据,但我从数据库中读取数据时遇到问题。
我总是得到相同的结果,但没有解决且无用。
我检查了我的代码很多但我找不到我的错误。
这是我的代码:
数据库.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>
);
}
}
但我总是得到这个:代理{类型:“对象”,可选:假,符号(领域):140510983537104,符号(id):175,...}
解决方案
尝试爱resolve()
外写事务。
推荐阅读
- jquery - 滚动到特定部分时,我想向上移动一些像素,因为标题被持久标题隐藏
- javascript - JavaScript 中的多个返回值
- excel - 按客户计算每个位置的访问次数
- .net-core-2.2 - 我可以获得解决 .NET 4.7.2 项目的包参考的帮助吗?
- google-bigquery - 如何在 Google bigquery 中为多个动态表创建授权视图?
- c - 即使下面的代码中有赋值而不是比较运算符,这段代码怎么会打印“是”
- html - 如何对齐单选按钮及其标签?
- javascript - lodash 过滤和排序
- vim - 如何在 Vim 中编写文件?
- excel - Microsoft Graph API $filter=name eq 'foo' 查询不适用于 GET 工作簿/表/{id}/列。无错误无过滤