Node.js 向Loopback.js中的模型添加远程功能

Node.js 向Loopback.js中的模型添加远程功能,node.js,loopbackjs,Node.js,Loopbackjs,我在loopback.js模型中添加了一个远程函数,效果很好,当我添加另一个具有不同名称和url的函数时,新函数可以工作,但前一个函数开始出现错误500 我尝试过更改我正在调用的函数的名称,更改api url以及所有这些事情,但都没有成功 第一个功能是 Station.remoteMethod( '_updateStation', { http: { path: '/update', verb: 'post' }, accepts: [

我在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


我解决了这个问题,很简单。只需禁用您想要覆盖的模型的功能,然后添加该功能,它就会工作。例如 若要在模型上添加自定义/更新api,则需要执行以下操作

    _Model.disableRemoteMethodByName('update', false);
然后用/updateurl添加新的远程方法,它就可以工作了。
因为如果您不禁用模型远程功能并创建/更新,它仍然会调用模型内置/更新方法,而不是您的自定义/更新方法。

我解决了这个查询,它很简单。只需禁用您想要覆盖的模型的功能,然后添加该功能,它就会工作。例如 若要在模型上添加自定义/更新api,则需要执行以下操作

    _Model.disableRemoteMethodByName('update', false);
然后用/updateurl添加新的远程方法,它就可以工作了。
因为如果您不禁用模型远程功能并创建/更新,它仍然会调用模型内置/更新方法,而不是自定义/更新方法。

错误消息是什么。你的终端上有任何输出吗?我知道了问题,问题是/update api,如果我将其更改为任何其他名称,如/updates,那么一切都可以正常工作,因为/update也是环回js中为模型公开的内置api,我想这是在做什么&导致错误。错误500的消息是什么。你的终端上有任何输出吗?我知道了问题,问题是/update api,如果我将其更改为任何其他名称,如/updates,那么所有事情都可以正常工作,因为/update也是环回js中为模型公开的内置api,我想这是在做什么&导致错误。