在Loopback.js中为模型添加远程功能

时间:2019-03-28 05:55:40

标签: node.js loopbackjs

我已经在loopback.js模型中添加了一个远程函数,该函数运行良好,当我添加另一个具有不同名称和URL的函数时,新函数可以正常工作,但是先前的函数开始出现错误500。

我尝试过更改正在调用的函数的名称,更改api url以及所有这些方法,但是没有用

第一个功能是这个

Station.remoteMethod(
    '_updateStation', {
        http: { path: '/update', verb: 'post' },
        accepts: [
            { arg: 'service', type: 'object', required: true, http: { source: 'body' } },
            {
                arg: 'ip', type: 'string', required: true, http: function (ctx) {
                    var req = ctx.req;
                    return req.headers['x-forwarded-for'] ||  req.connection.remoteAddress;
                }
            }
        ],
        returns: [
            { arg: 'status', type: 'string', description: ' stations update status' },
            { arg: 'statusCode', type: 'string', description: ' stations update code' }  
        ]
    }
);

新功能是

Station.remoteMethod(
    '_updateMultiple', {
        http: { path: '/updateall', verb: 'post' },
        accepts: [
            { arg: 'service', type: 'object', required: true, http: { source: 'body' } },
            {
                arg: 'ip', type: 'string', required: true, http: function (ctx) {
                    var req = ctx.req;
                    return req.headers['x-forwarded-for'] ||  req.connection.remoteAddress;
                }
            }
        ],
        returns: [
            { arg: 'status', type: 'string', description: ' stations all update status' },
            { arg: 'updateData', type: 'string', description: ' stations all update code' },
            { arg: 'stations', type: 'string', description: ' stations all update code' }    
        ]
    }
);
  

如果我注释掉新功能,/ update api可以正常工作,但是如果取消注释该新功能,则/ update api会给出错误500

1 个答案:

答案 0 :(得分:0)

我解决了这个查询,这很简单。只需禁用要覆盖的模型功能,然后添加功能,它将起作用。例如 如果要在模型上添加自定义/ update api,则需要这样做。

    _Model.disableRemoteMethodByName('update', false);

然后使用/ update url添加新的远程方法,它将起作用。 因为如果您不禁用模型远程功能并创建/ update,它仍然会调用/ update方法中内置的模型,而不是您自定义的/ update方法。