如何在客户端项目中显示结果

时间:2019-05-04 03:47:08

标签: reactjs mongoose

我在mongodb中有300000个文档

我的功能大约需要40秒才能显示结果,如何使其更快?

async function getAllWebsite(req, res) {

    var nameWebsites = await Article.distinct("website.name");
    var idWebsites = await Article.distinct("website.id");
    var numberArticle = [];
    var result = [];

    for(var i = 0; i < nameWebsites.length; i++) {
        await Article.aggregate([
            { $match: {"website.id": idWebsites[i]}},
            { $count: "count"}        
        ], function(err, result){
            numberArticle.push(result);
        });
    }

    for(var i = 0; i < nameWebsites.length; i++) {
        result.push({"id":idWebsites[i], "name":nameWebsites[i], "number_article": numberArticle[i][0].count});
    }

    var count = result.length;
    res.json({
        data: result,
        total: count,
    });   
}

这是我的解决方案,但它只显示“正在加载”而不是我的结果,我认为原因是我的功能太慢了

componentDidMount() {
        fetch("http://localhost:3030/api/articles/website")
        .then(res => res.json())
        .then(datas => this.setState({ results: datas.data}))
    }

    render() {
        const { results, isLoading } = this.state;

        return <div className="main-content">   
        { !isLoading ? (
            results.map((website) => {
                return(
                    <div>
                        <p>Id: {website.id}</p>
                        <p>Name: {website.name}</p>
                    </div>
              )
            })
            ):(<h3>Loading...</h3>)
        }
        </div>;
    }

0 个答案:

没有答案
相关问题