React native - local-mongoDb - Не удается прочитать свойство undefined - PullRequest
0 голосов
/ 27 сентября 2018

Я не знаю, почему это приводит к ошибке.Я должен взять из библиотеки local-mongodb новый _id моего будущего нового postIt и запустить новую страницу, но в "this.props.onInsertNewPost (idPost);"получено сообщение об ошибке (Не удается прочитать свойство idPost не определено).onInsertNewPost вызывает избыточную функцию, которая устанавливает «id» в initialState.Я пытался использовать привязку (this.idPost = this.idPost.bind (this)) и вызов функции idPost () в componentWillMout, но проблема та же

componentWillMount(){
        return new Promise((resolve,reject)=>{
            setTimeout(()=>{
                db.loadDatabase(err=>{           
                    var obj={
                        year : this.state.year,
                        month : this.state.month,
                        day : this.state.day,
                        houre : this.state.houre,
                        minute : this.state.minute,
                        text : '',
                        isSelected : false,
                        imagesStored : []
                    };
                    db.insert(obj,function(err,doc){

                        let docDoc=JSON.stringify(doc);
                        let parseDoc=JSON.parse(docDoc);

                        console.log(parseDoc._id);

                        idPost=parseDoc._id;
                        this.props.onInsertNewPost(idPost);
                        console.log('create nuovo post');
                        resolve('componentDidMoutnewPostit');
                    });
                });
            },100);
        }); 
    };

1 Ответ

0 голосов
/ 27 сентября 2018

Я думаю, что эта проблема произошла, потому что idPost является глобальным.если вы передаете parseDoc._id непосредственно в функцию onInsertNewPost, она должна работать.

componentWillMount(){
            return new Promise((resolve,reject)=>{
                setTimeout(()=>{
                    db.loadDatabase(err=>{           
                        var obj={
                            year : this.state.year,
                            month : this.state.month,
                            day : this.state.day,
                            houre : this.state.houre,
                            minute : this.state.minute,
                            text : '',
                            isSelected : false,
                            imagesStored : []
                        };
                        db.insert(obj,function(err,doc){
                            let docDoc=JSON.stringify(doc);
                            let parseDoc=JSON.parse(docDoc);
                            console.log(parseDoc._id);
                            this.props.onInsertNewPost(parseDoc._id);
                            console.log('create nuovo post');
                            resolve('componentDidMoutnewPostit');
                        });
                    });
                },100);
            }); 
        };
...