我如何使用mongoose,nodejs从Mongodb获取数据

时间:2019-02-23 08:54:02

标签: node.js reactjs mongodb mongoose

我刚刚开始学习Nodejs,mongodb,reactjs并遇到麻烦。

我正在尝试从mongodb获取数据。

后端代码:

app.post('/tweet',(req,res)=>{
    tweetData.find((err,data)=>{
        if(err){
            return res.json({success: false, error: err});
        }
        return res.json({success: true, data:data});
    });
})

字体结束代码:

class TweetContainer extends React.Component{

    constructor(props){
        super(props);
        this.state = {
            data:null,
            API_URL : 'http://localhost:5000/tweet'
        }
    }

    componentDidMount(){

        fetch(this.state.API_URL)
        .then(response=>response.json)
        .then(result=>{
            this.setState({
                data: result.data
            });
            console.log(this.state.data)
        });

    }
    render(){

        return(
            <div id="main">
                <h2>Tweet</h2>
                <div id="stream">

                </div>
            </div>
        );
    }
}

当我记录数据时,控制台显示未定义。

我做错了。

1 个答案:

答案 0 :(得分:1)

编辑1:

您还在用猫鼬查询,这是错误的,因为它将第一个参数作为查询:

app.post('/tweet',(req,res)=>{
    tweetData.find(queryObject || {}, (err,data)=>{
        if(err){
            return res.json({success: false, error: err});
        }
        return res.json({success: true, data:data});
    });
})

您在更新状态后立即记录状态,让我告诉您这不是它的工作方式,它不会立即更新状态,因此您必须等待它执行。

您可以将回调传递给setState,以便在状态更改完成后执行回调,如下所示:

this.setState({ data: result.data }, () => {
    console.log(this.state)
})