我定期使用 mongodb,在从查询结果访问特定属性之前,我会编写一个存在检查,通常如下所示:
if(result && result.subObject1 && result.subObject1.property) { ... }
这是检查结果流或我所知道的我收到的任何其他对象的最安全方法。
这工作得很好,只是大多数时候我对自己说,“可能有更好的方法来做到这一点”,是的。
我查看了一些相关的帖子,但没有一个真正解决这个问题,特别是在处理(可能)深度嵌套的对象时。
最佳答案
避免对数据值本身进行真/假检查。
例如
请求正文:数据:{温度:-128,级别:42}
等
服务器验证:必须发送数据并设置温度值
验证码:if(data && data.Temperature){//ok}else{//输入无效}
上面的验证代码也会拒绝 0 和负温度值,而服务器的实际验证动机是确保温度值始终被设置。
因此检查应该明确且单独定义:
函数存在(val){ return val !== undefined && val !== null; }
函数 isNumber(val){ return !isNan(val); }
应该使用这些检查的组合。
要进行更可靠的检查,请使用 validator 等模块.
就深度检查而言,您需要定义完整且正确的 JSON schema首先,然后运行 schema validator就在上面。
关于javascript - 检查对象和属性是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24786689/