反应本机-local-mongoDb-无法读取属性未定义

时间:2018-09-27 12:06:12

标签: mongodb reactjs react-native react-redux

我不知道为什么会出错。 我应该从local-mongodb库中获取我未来的新postIt的新_id并运行新页面,但应位于“ this.props.onInsertNewPost(idPost);”中它得到一个错误(无法读取属性idPost未定义)。 onInsertNewPost调用redux函数,该函数在initialState中设置“ id”。 我尝试在componentWillMout中使用绑定(this.idPost = this.idPost.bind(this))调用idPost()函数,但遇到了同样的问题

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 :(得分:0)

我认为发生此问题是因为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);
            }); 
        };