Javascript 在等待页面加载之前调用节点api时出错

Javascript 在等待页面加载之前调用节点api时出错,javascript,node.js,mongoose,Javascript,Node.js,Mongoose,我正在使用Node.js和MongoDb进行开发,其标题如下图所示 每个header元素都调用一个node.js api,该api执行一些mongoose聚合调用,并返回一些数据和page Get render。一切正常,但当用户单击任何菜单时,加载需要5-10秒,如果用户单击另一个或相同的菜单按钮(当页面加载时),则在节点api中会出现一些未定义的变量错误,该错误已定义。当用户在单击其他菜单按钮之前等待页面完全加载时,应用程序工作正常 app.get("/services", functio

我正在使用Node.js和MongoDb进行开发,其标题如下图所示

每个header元素都调用一个node.js api,该api执行一些mongoose聚合调用,并返回一些数据和page Get render。一切正常,但当用户单击任何菜单时,加载需要5-10秒,如果用户单击另一个或相同的菜单按钮(当页面加载时),则在节点api中会出现一些未定义的变量错误,该错误已定义。当用户在单击其他菜单按钮之前等待页面完全加载时,应用程序工作正常

app.get("/services", function(req, res) {



mongoose.connection.db.collection("dummy", function(err, collection) {

    collection.aggregate(
        [{}]
    ).toArray(function(err, site_count1) {


        mongoose.connection.db.collection("dummy", function(err, collection) {

            collection.aggregate(
                [{}]
            ).toArray(function(err, site_count2) {
                label=["scared","excitement","loved/liked","anger","unhappy","concerned","happy"]
                mongoose.connection.db.collection("dummy", function(err, collection) {

                    dataset={}
                    diet = []

                    diet = []
                    typ="Emotion"

                    dataset[typ] = {}
                    //console.log(typ)
                    collection.aggregate(
                        [
                            {}
                        ]
                    ).toArray(function(err, pro) {


                        console.log(diet)
                        dataset[typ]["label"]=(categ1) //Here error is coming dataset[typ] not defined and this is already defined above at line 28
                        dataset[typ]["x-axis"]=label.sort()




                        mongoose.connection.db.collection("dummy", function(err, collection) {


                            collection.aggregate([{}]
                            ).toArray(function(err, pro) {

                                mongoose.connection.db.collection("dummy", function(err, collection) {


                                    collection.aggregate(
                                        [{}]
                                    ).toArray(function(err, pro) {




                                        res.render("sentimentview", {
                                            dataset: JSON.stringify(sentiment)
                                        });
                                    });
                                });

                            });

                            //        if(proc==Type.length)
                            //        {

                        })

                    });

                    //        if(proc==Type.length)
                    //        {

                })
            })
        })


    })


});
});
上面是单击服务时进行的节点调用的示例代码。错误即将来临

数据集[类型][“标签”]=(类别1)


如果用户在不等待页面加载的情况下再次单击按钮,则会生成此代码。

在访问其属性之前,设置一个条件以检查
dataset
是否存在,您可以在出现错误之前添加,如下所示:
if(dataset&&dataset.type){…此处的所有内容..}
@saikatchakrabortty但是如果我在另一个调用之前等待请求完成,它工作正常是的,所以在你的情况下,
dataset
或者可能是
dataset.typ
或者
dataset.type.label
不存在,这就是为什么你会出错的原因,如果你保持一个条件,那么它不会抛出错误,只有当这些值存在时,它才会执行这些操作