我正在尝试通过我的Express应用程序中的请求模块使用Mapbox API获取位置坐标。请求的URL(特定位置)通过html形式给出。它在url中解析,API提供所有信息,包括坐标。看起来像这样:
app.post("/", function(req, res){
var location = req.body.location;
var url = "https://api.mapbox.com/geocoding/v5/mapbox.places/" + location + ".json?access_token=MY_TOKEN"
request(url, function(error, response, body) {
var data = JSON.parse(body);
var coordinates = data.features[0].geometry.coordinates
如果我尝试API可以找到并处理的任何位置,那么一切都将正常工作。但是,当我尝试通过表单插入一些随机字符时,应用程序崩溃,并显示错误“ TypeError:无法读取未定义的属性'geometry'”。 Console.log(data)显示数据对象的features元素是一个空数组[]。 我尝试通过显示消息并在数据未定义时重定向来处理错误,如下所示:
if (!data.features) {
req.flash("error", "Location not found, please try again.")
res.redirect("/")}
我是编码之旅的开始,这是我的第一个要求,非常感谢您的帮助!
答案 0 :(得分:0)
对不起,我周末休息。
如果data.features是一个空数组,它将不会通过测试(!data.features)
。
您可以尝试类似
if(Array.isArray(data.features) && data.features.length>0){
//code here
}else{
req.flash("error", "Location not found, please try again.")
res.redirect("/")
}