我得到的错误是Missing primary key property 'email'
。我对数据库完全陌生,想知道我的代码是什么问题。
另外,我正确地写入数据库吗?如果我成功将项目放入数据库,那么我将如何查看它?
我为此寻找了SO和谷歌,但无法找到具体的答案。
这是.js
档案:
import React, { Component } from 'react';
import {TextInput, KeyboardAvoidingView, Text, StyleSheet, TouchableOpacity} from 'react-native';
import Third from './Third';
class Second extends Component {
onButtonPress() {
this.props.navigator.push({
id: 'Third' // .js file name
});
}
render() {
const Realm = require('realm');
class Email {}
Email.schema = {
name: 'Email',
primaryKey: 'email',
properties: {
name: 'string',
},
};
const realm = new Realm({schema: [Email]});
// Query
let email = realm.objects('Email');
// email.length // => 0
// Write
realm.write(() => {
email = realm.create('Email', {
name: 'something',
});
});
return(
<KeyboardAvoidingView style={styles.container}>
<TextInput
style={styles.userInput}
placeholder={" email"}
/>
<TextInput
style={styles.userInput}
placeholder={" password"}
secureTextEntry={true}
/>
<TouchableOpacity style={styles.buttonContainer}>
<Text onPress={this.onButtonPress.bind(this)} style={styles.buttonText}>Submit</Text>
</TouchableOpacity>
</KeyboardAvoidingView>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
padding: 20 // makes button horizontally longer.
},
userInput: {
marginBottom: 20,
height: 40,
borderWidth: 4
},
userInput: {
marginBottom: 20,
backgroundColor: '#9b42f4',
height: 40,
borderRadius: 10,
borderWidth: 1
},
buttonContainer: {
backgroundColor: '#41bbf4',
paddingVertical: 10,
marginBottom: 20,
borderRadius: 10
},
buttonText: {
textAlign: 'center',
color: '#FFFFFF'
}
});
export default Second;
答案 0 :(得分:0)
错误是因为您在架构中使用email
作为主键,这在创建Email
对象时成为必需属性。您的意思是将name
作为主键而不是email
吗?或类似id
属性。
摆脱此错误的一种方法是使用email
替换primaryKey设置中的name
。
要查看您的数据,您可以使用https://github.com/realm/realm-browser-osx,但它现在仅在Mac OS上可用。
P.S。当您进行架构更改时,您可能希望删除该应用程序并重新安装它。如果你刚刚开始开发它,现在很好。 稍后,您应该增加架构版本,并在商店中获得应用程序后编写迁移。 (甚至可能在此之前开始)