尝试创建具有现有主键值的类型对象未实现'

时间:2017-07-31 17:32:05

标签: javascript reactjs react-native realm

我试图在用户点击Realm时尝试在Submit中存储用户电子邮件地址,但每当我这样做时,我都会收到错误(链接如下)。我知道数据在领域中仍然存在,每次渲染时,我都试图创建一个具有相同名称的新Email对象。

我关注https://realm.io/docs/javascript/latest/#updating-objects(更新部分)。也许更新会解决这个问题?我专注于realm.write()方法。

error I'm getting

这是我的.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: 'name',
            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'
            });

            realm.create('Email', {name: "else"}, true);
        });

        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 个答案:

没有答案