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:)