javascript - 使用请求模块处理错误 - 未定义的对象
问题描述
我正在尝试通过我的快速应用程序中的请求模块使用 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:无法读取未定义的属性'几何'”。Console.log(data) 显示数据对象的 features 元素是一个空数组 [ ]。我尝试通过在数据未定义时显示消息和重定向来处理错误,如下所示:
if (!data.features) {
req.flash("error", "Location not found, please try again.")
res.redirect("/")}
我正处于编码之旅的开始,这是我的第一个请求,所以我非常感谢任何帮助,谢谢!
解决方案
对不起,我周末休息。如果 data.features 是一个空数组,它不会失败 test (!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("/")
}
推荐阅读
- macos - php 文件未使用 nginx-macOs 打开
- c# - AutoMapper 和 CA1506:避免过度的类耦合
- unity3d - 测试使用本地私有 SerializedField 的 Unity 方法
- c# - .netcore 单元测试运行不正常
- c# - 应用程序仅在一台设备上崩溃。从图库访问图像时返回 null 而不是 uri
- node.js - 如果我不关心人类的可读性,使用“二进制”作为读取文件的编码是一种好习惯吗?
- office-js - 取消保护不在excel中工作添加在线office365
- json - 使用动态键进行 Swift json 解码
- sql - 如何创建所有列都有很多细节的关系
- c# - 有没有办法从 EF 中的字符串值数组动态生成多个喜欢?