检查对象和属性是否存在

时间:2014-07-16 17:06:18

标签: javascript node.js

我定期使用mongodb,在从查询结果访问特定属性之前,我写了一个通常看起来像这样的存在检查:

if(result && result.subObject1 && result.subObject1.property) { ... }

这是检查我所知道的结果流或我收到的任何其他对象的最安全的方法。

这很好用,它只是我想到的大部分时间,#34;可能有更好的方法来做到这一点"有。

我查看了一些相关帖子,但没有一个真正解决这个问题,特别是在处理(可能)深层嵌套对象时。

1 个答案:

答案 0 :(得分:1)

避免对数据值本身进行真/假检查。

E.g。

请求正文:data : { temperature : -128, level : 42 }等。

服务器验证:data must be sent and have temperature value set

验证码:if(data && data.temperature){//ok}else{//invalid input}

上述验证码也将拒绝0和负温度值,而服务器的实际验证动机是确保始终设置温度值。

因此,检查应明确和单独定义:

function exists(val){ return val !== undefined && val !== null; }

function isNumber(val){ return !isNan(val); }

应使用这些检查的组合。

要进行更强大的检查,请使用validator等模块。

就深度检查而言,您需要首先定义一个完整且正确的JSON schema,然后在其上运行schema validator