React native 如何在react native中从领域数据库读取数据?
我遵循react native中的realm db教程,成功地从db中创建、插入和删除数据,但从数据库中读取数据时遇到问题 我总是得到同样的结果,这是没有解决和无用的 我经常检查我的密码,但我找不出我的错误 这是我的密码: database.jsReact native 如何在react native中从领域数据库读取数据?,react-native,realm,React Native,Realm,我遵循react native中的realm db教程,成功地从db中创建、插入和删除数据,但从数据库中读取数据时遇到问题 我总是得到同样的结果,这是没有解决和无用的 我经常检查我的密码,但我找不出我的错误 这是我的密码: database.js import Realm from 'realm'; export const HEART_QUEUE_SCHEMA = 'HeartQueue'; export const HeartQueueSchema = { name : HEA
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>
);
}
}
从“./数据库”导入域;
从“./databases”导入{insertToHeartQueue,deleteHeartQueue,deleteAllHeartQueue,getAllHeartQueue}
导出默认类应用程序扩展组件{
构造函数(){
超级();
此.state={
数据:“测试”,
时间:0,,
testDB:“”,
xxxz:[]
}
}
_readDB=()=>{
getAllHeartQueue()。然后((allHeartsList)=>{
console.log('data',allHeartsList);
这是我的国家({
xxxz:allHeartsList
})
}).catch((错误)=>{
警报(错误)
});
}
render(){
console.log('state',this.state.xxxz)
返回(
欢迎来到这里!
{this.state.time}
这是.\u readDB()}
title=“询问数据”
color=“#cc77v”
accessibilityLabel=“了解有关此紫色按钮的详细信息”
/>
);
}
}
但我总是这样:
代理{type:“object”,可选:false,Symbol(realm):140510983537104,Symbol(id):175,…}尝试在写事务之外使用
resolve()
。谢谢,你能告诉我如何使用resolve()更新代码吗?你可以在realm.write()
中的代码块/回调中调用resolve()
。我的建议是在realm.write()之后调用resolve()
。