错误处理 - 对于remoteMethods为404

时间:2015-12-24 23:10:45

标签: node.js loopbackjs strongloop

我已经能够在strongloop的帮助下轻松设置基本的node.js api。我已经能够使用remoteMethods添加自定义路由。但是,我为这些路线设置404有点困惑。我有一个名为category的模型mature的路由,它接受一个参数(categorId)并获取该类别下的所有游戏,其中布尔值设置为mature的真值。端点网址为:http://localhost:3000/api/Categories/1004/games/mature。如果我放置一个不存在的categorId,它会中断。设置路由以处理404错误的最佳方法是什么?例如,显示"no such category id"Github REPO

  

公共/模型/ category.js

Category.mature = function(id, limit) {
    var app = this.app;
    var Games = app.models.Games;
    Category.findById(id, {}, function(err, category){
        if (err) return callback(err);
        //set limit
        if (limit && limit > 5){
          limit = 5;
        }else if(limit === undefined){
          limit = 5;
        }
        Games.find({
            "where": {
                categoryId: id,
                mature: true,
                gameId: {gt: hashids.decode(after)}
            },
            "limit": limit
        }, function(err, gameArray) {
            if (err) return callback(err);
            callback(null, gameArr);
        });
    )};
    Category.remoteMethod(
    'mature', {
        accepts: [
            {arg: 'id', type: 'number', required: true},
            {arg: 'limit',type: 'number',required: false}
        ],
        // mixing ':id' into the rest url allows $owner to be determined and used for access control
        http: {
            path: '/:id/games/mature',
            verb: 'get'
        },
        returns: {
            root: true,
            type: 'object'
        }
    }
);

};

1 个答案:

答案 0 :(得分:2)

在致电err.statusCode之前将callback(err)设为404:

if(!category) {
  var err = new Error('Category ID ' + id + ' does not exist.');
  err.statusCode = 404;
  callback(err);
}

这将导致:

enter image description here