2

nodejsPOST が JSON オブジェクトであるという簡単な高速ルートを書いています。

ノード/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 に答える