2

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

作为一个 node/js 新手,我很想知道是否有一种优雅的方式来测试 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 还是 express 中?

4

1 回答 1

1

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

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

如果您想要一个可以很好地扩展到多个属性的解决方案:

您可以使用Array.prototype.every

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

它不是更短,但我认为它更具语义性,并且它不会为空字符串、null 和其他“虚假”值返回误报。当然-您可以将其提取到函数中:)

这是一个小提琴

于 2013-07-09T22:01:40.450 回答