-1

これは、users.js に json を含むグローバル配列です。

global.users = [
    {
        'id':1,
        'name' : 'Dain',
        'age' : 24,
        'hobby' : 'gaming'
    }
];

router.get関数:

router.get('/:userid', function(req, res){

for(let i = 0 ; i < global.users.length ; i++){
    if(global.users[i].id === parseInt(req.params.userid, 10)){
        return res.json({
        user: global.users[i],
        message : 'Success',
        error: false
        });
    }
}
return res.status(404).json({
    message : 'User Not Found',
    error: true
});

});

ただし、2 つのパラメーターを取得する次の関数は期待どおりに機能しません。

router.get("'/:userid'+'+:age'", function(req, res){
for(let i = 0 ; i < global.users.length ; i++){
    if( (global.users[i].id === parseInt(req.params.userid, 10)) && (global.users[i].age === parseInt(req.params.age, 10))){
        return res.json({
        user: global.users[i],
        message : 'Success',
        error: false
        });
    }
}
return res.status(404).json({
    message : 'User Not Found',
    error: true
});

});

URLで次のように年齢を渡しても、ユーザー情報が返されます。

http://localhost:8080/users/1+226

226 は定義された年齢のいずれでもないため、以下を返す必要があります。

{
    message : 'User Not Found',
    error: true
}

年齢を入力しても、値が返されます。ガイドしてください。

http://localhost:8080/users/1+24
4

1 に答える 1

1

特定のフィールドが一致するかどうかを確認するループを作成する代わりに。underscoreJS を使用すると、配列内のデータを見つけるのに適していますhttp://underscorejs.org/#findWhere

注: (モジュールのアンダースコアを最初にインストールします)

var _ = require('underscore');

var user = _.findWhere(global.users, {
    id: req.params.userid,
    age:  req.params.age
});

if (user !== null) {
    return res.json({
        user: user,
        message : 'Success',
        error: false
    });
} else {
    return res.status(404).json({
        message : 'User Not Found',
        error: true
    });
}
于 2016-09-19T06:17:26.703 に答える