0

node.js のドキュメントから

querystring.parse('foo=bar&baz=qux&baz=quux&corge')

// returns
{ foo: 'bar', baz: ['qux', 'quux'], corge: '' }

サーバー側でパラメーターを解析するときに、これらのパラメーターが正しい順序で送信されているかどうかを確認する方法はありますか?

たとえば、foo=bar常に FIRST パラメータなどを強制したいと考えています。これはどのように達成できますか?

今、私は次のようなことができます:

var queryData = querystring.parse('foo=bar&baz=qux&baz=quux&corge');

しかし、その後

if(queryData.foo) {...}

パラメータ「foo」がURLに存在するかどうかのみをチェックし、正しい場所にあるかどうかはチェックしません

4

3 に答える 3

3

次のような方法で自分で解析できます。

var qs = 'foo=bar&baz=qux&baz=quux&corge';
var parsed = qs.split('&').map(function (keyValue) {
    return keyValue.split('=');
});

これ[ ['foo','bar'], ['baz', 'qux'], ['baz', 'quux'], ['corge', '' ]により、次のようなものが得られます。最初のものが必要かどうかを確認できます。if (parsed[0][0] === 'foo')

この質問をチェックして、自分で解析することもできます: How can I get query string values in JavaScript?

または、nodejs が受け取ったのと同じ順序でプロパティを挿入し、v8 がその順序を維持するという事実に頼ることができます (これは実際には信頼性が低く、動作が変わる可能性があります) if (Object.keys(queryData)[0] === 'foo')

または、 foo が最初に表示されるかどうかを確認できます。

if (qs.indexOf('foo=') === 0)

または何かのようなif (qs.slice(0, 4) === 'foo')

于 2014-05-26T04:13:08.340 に答える
0

このコードが機能するかどうかを確認してください。

var querystring = require("querystring");
var obj =  querystring.parse('foo=bar&baz=qux&baz=quux&corge');

var rankOfObjects = {"0":"foo","1":"baz","2":"corge"};
var objArray = Object.keys(obj);

if(checkRank()){
    console.log("in order");
}else{
    console.log("not in order");
}

function checkRank(){
    for(var rank in objArray){
        if(objArray[rank]!=rankOfObjects[rank]){
             return false;
        }
     }
     return true
}
于 2014-05-26T04:24:58.497 に答える
0

分割要素の配列が得られるため、昔ながらの string.split を実行する方がよい場合があります。その後、配列を検査できます

文字列を特定の文字で分割するにはどうすればよいですか?

于 2014-05-26T04:04:57.860 に答える