Javascript 在等待页面加载之前调用节点api时出错
我正在使用Node.js和MongoDb进行开发,其标题如下图所示 每个header元素都调用一个node.js api,该api执行一些mongoose聚合调用,并返回一些数据和page Get render。一切正常,但当用户单击任何菜单时,加载需要5-10秒,如果用户单击另一个或相同的菜单按钮(当页面加载时),则在节点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
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
不存在,这就是为什么你会出错的原因,如果你保持一个条件,那么它不会抛出错误,只有当这些值存在时,它才会执行这些操作