可能的未处理的承诺拒绝(标识:3):错误:Reference.child失败

时间:2020-07-07 14:04:48

标签: reactjs firebase react-native firebase-realtime-database

我正在尝试在Firebase中创建孩子时制作具有以下问题的社交应用程序。 在下面的代码中,我试图创建一个子标签,该子标签返回数据库中服务器的消息和时间戳。但是我无法创建子标签,它返回上述警告并且不放置或保存数据我可以在Firebase中实时在用户标签下创建Sub标签。 Here is the warning that appears while i try to save data

firebase代码

import React, { Component } from 'react';
import firebase from 'firebase';
//import 'firebase/database';
import {

    Text,
    Dimensions,
    TextInput,
    TouchableOpacity,
    View,
    StyleSheet,
    Alert,
    FlatList,
    SafeAreaView,
    AsyncStorage,
    disableYellowBox


} from 'react-native';
//import firebase from 'firebase';
import User from './ChatUser';
//console.disableYellowBox = true; 
import { State } from 'react-native-gesture-handler';
export default class ChatScreen extends React.Component {
    static navigationOptions = ({ navigation }) => {
        return {
            title: navigation.getParam('Name', null)
        }
    }

    /*componentDidMount() {
    firebase.database.ref('messages').child(User.Phone).child(this.state.person.Phone)
            .on('child_added', (value) => {
                this.setState((prevState) => {
                    return{
                        messageList:[...prevState.messageList,value.val()]
                    }
                })
             })
    }*/

   
    constructor(props) {
        super(props);
        this.state = {

            person: {

                Name: props.navigation.getParam("name"),
                Phone: props.navigation.getParam("phone"),
            },
            textMessage: '',
            messageList: []

        }
    }
    handleChange = key => val => {

        this.setState({ [key]: val })
    }

    sendMessage = async () => {
       // console.log('running')
        if (this.state.textMessage.length > 0) {
           let msgId = firebase.database().ref('messages').child(User.Phone)
           .child(this.state.person.Phone).push({  }).key;
           //key=msgId;
            let updates = {};
            let message = {
                message: this.state.textMessage,
                time: firebase.database.ServerValue.TIMESTAMP,
                from: User.Phone
            };
            updates['messages/' + User.Phone + '/' + this.state.person.Phone + '/' + msgId] = message;
            updates['messages/' + this.state.person.Phone + '/' + User.Phone + '/' + msgId] = message;
            firebase.database().ref().update(updates);
            this.setState({ textMessage: '' });

       }
    }
    renderRow = ({ item }) => {
        return (
            <View style={{

                flexDirection: 'row',
                width: '60%',
                alignSelf: item.from === User.Phone ? 'flex-end' : 'flex-start',
                backgroundColor: item.from === User.Phone ? '#00897b' : '#7cb342',
                borderRadius: 5,
                marginBottom: 10
            }}>

                <Text style={{ color: '#fff', padding: 7, fontSize: 16 }}>

                    {item.messageList}

                </Text>

                <Text style={{ color: '#eee', padding: 3, fontSize: 12 }}>
                    {item.time}
                </Text>

            </View>
        )
    }
    render() {

        let { height, width } = Dimensions.get('window');
        return (
            <SafeAreaView>
                <FlatList
                    style={{ padding: 10, height: height * 0.8 }}
                    data={this.state.messageList}
                    renderItem={this.renderRow}
                    keyExtractor={(Item, index) => index.toString()}


                />
                <View style={{ flexDirection: 'row', alignItems: 'center' }}>
                    <TextInput
                        style={styles.input}
                        value={this.state.textMessage}
                        //onChangeText={this.handleChange('textMessage')}
                        onChangeText={textMessage => this.setState({ textMessage })}
                        placeholder="Type message........"

                    />
                    <TouchableOpacity onPress={this.sendMessage}>
                        <Text
                            style={styles.btnText}>
                            Send
                   </Text>
                    </TouchableOpacity>
                </View>

            </SafeAreaView>
        )
    }
}

0 个答案:

没有答案