testingJSON对象包含我期望的属性

我正在写一个简单的nodejs express路由,POST是一个JSON对象。

作为一个节点/ js新手,我很好奇,知道是否有一个优雅的方式来testing一个JSON对象包含所有我希望提交的属性,只有这些属性?

例如,如果我有这样的JSON对象:

 data:{ "a":"somevalue". "b":"somebvalue", "c":"somecvalue" } 

我想我可以做一些事情:

 if( (data.a) && (data.b) && (data.c) ){ //Proceed and process post else { // respond with unacceptable } 

我只是想知道是否有一个更好的方法,在JavaScript或快递?

你的代码并不完全正确,你正在做什么。 例如,对于可能有效的对象{a:undefined,b:3,c:5}你会认为它没有所需的属性,但事实上它确实是这样。 更正确的方法(假设原型也很好)将是:

 ("a" in data) && ("b" in data) && ("c" in data) 

如果您想要一个可以很好地适应多个属性的解决scheme:

你可以使用Array.prototype.every

 if(["a","b","c"].every(function(attr){ return attr in data;})){ 

这并不短,但我认为这是更多的语义,它不会返回空string,null和其他'falsy'值的误报。 当然 – 你可以提取这个function:)

这是一个小提琴