【问题标题】:Loopback - How to extend api using loopbackLoopback - 如何使用 loopback 扩展 api
【发布时间】:2019-03-21 00:50:16
【问题描述】:

我想使用 loopback 扩展我的 api。我已阅读文档

   'use strict';

module.exports = function(Meetups,pusher) {

  Meetups.status = function(cb) {
      var currentDate = new Date();
      var currentHour = currentDate.getHours();
      var OPEN_HOUR = 6;
      var CLOSE_HOUR = 20;
      console.log('Current hour is %d', currentHour);
      var response;
      if (currentHour >= OPEN_HOUR && currentHour < CLOSE_HOUR) {
        response = 'We are open yeah!!! for business.';
      } else {
        response = 'Sorry, we are closed. Open daily from 6am to 8pm.';
      }
      cb(null, response);
    };
    Meetups.remoteMethod(
      'status', {
        http: {
          path: '/status',
          verb: 'get'
        },
        returns: {
          arg: 'status',
          type: 'string'
        }
      }
    );
    Meetups.pusher = function(cb) {

        if (2>1) {
          response = 'sending something';
        } else {
          response = 'mont blanc';
        }
        cb(null, response);
      };
      Meetups.remoteMethod(
        'pusher', {
          http: {
            path: '/pusher',
            verb: 'get'
          },
          returns: {
            arg: 'pusher',
            type: 'string'
          }
        }
      );

};

首先,我添加了 /status 路由,它运行良好。但是,当我尝试添加 /pusher 时。它只是没有用。我收到一个错误

   {
  "error": {
    "statusCode": 500,
    "name": "ReferenceError",
    "message": "response is not defined",
    "stack": "ReferenceError: response is not defined\n    at Function.Meetups.pusher (/Users/ankursharma/Documents/projects/meetupz/common/models/meetups.js:34:20)\n    at SharedMethod.invoke (/Users/ankursharma/Documents/projects/meetupz/node_modules/strong-remoting/lib/shared-method.js:270:25)\n    at HttpContext.invoke (/Users/ankursharma/Documents/projects/meetupz/node_modules/strong-remoting/lib/http-context.js:297:12)\n    at phaseInvoke (/Users/ankursharma/Documents/projects/meetupz/node_modules/strong-remoting/lib/remote-objects.js:677:9)\n    at runHandler (/Users/ankursharma/Documents/projects/meetupz/node_modules/strong-remoting/node_modules/loopback-phase/lib/phase.js:135:5)\n    at iterate (/Users/ankursharma/Documents/projects/meetupz/node_modules/strong-remoting/node_modules/loopback-phase/node_modules/async/lib/async.js:146:13)\n    at Object.async.eachSeries (/Users/ankursharma/Documents/projects/meetupz/node_modules/strong-remoting/node_modules/loopback-phase/node_modules/async/lib/async.js:162:9)\n    at runHandlers (/Users/ankursharma/Documents/projects/meetupz/node_modules/strong-remoting/node_modules/loopback-phase/lib/phase.js:144:13)\n    at iterate (/Users/ankursharma/Documents/projects/meetupz/node_modules/strong-remoting/node_modules/loopback-phase/node_modules/async/lib/async.js:146:13)\n    at /Users/ankursharma/Documents/projects/meetupz/node_modules/strong-remoting/node_modules/loopback-phase/node_modules/async/lib/async.js:157:25\n    at /Users/ankursharma/Documents/projects/meetupz/node_modules/strong-remoting/node_modules/loopback-phase/node_modules/async/lib/async.js:154:25\n    at execStack (/Users/ankursharma/Documents/projects/meetupz/node_modules/strong-remoting/lib/remote-objects.js:522:7)\n    at RemoteObjects.execHooks (/Users/ankursharma/Documents/projects/meetupz/node_modules/strong-remoting/lib/remote-objects.js:526:10)\n    at phaseBeforeInvoke (/Users/ankursharma/Documents/projects/meetupz/node_modules/strong-remoting/lib/remote-objects.js:673:10)\n    at runHandler (/Users/ankursharma/Documents/projects/meetupz/node_modules/strong-remoting/node_modules/loopback-phase/lib/phase.js:135:5)\n    at iterate (/Users/ankursharma/Documents/projects/meetupz/node_modules/strong-remoting/node_modules/loopback-phase/node_modules/async/lib/async.js:146:13)"
  }
}

我很确定,这是一个很小的错误。我是环回的初学者,并试图在我的项目中实现环回。

【问题讨论】:

    标签: loopbackjs


    【解决方案1】:

    在示例中,他们将响应定义为该远程方法的局部变量,但您没有。其次,(Meetups,pusher) 这里不需要导出 pusher。您正在添加到 Meetups。

    【讨论】:

      【解决方案2】:

      您必须在推送器远程方法中声明响应。 另一种不声明响应的方法是,简单地返回值。

      例子:

      Meetups.pusher = function(cb) {
          if (2>1) {
              return 'sending something';
          } else {
              return 'mont blanc';
          }
      };
      

      【讨论】:

        【解决方案3】:

        定义变量并返回变量也可以直接在if和else中调用cb

        Meetups.pusher = function(cb) {
            if (2>1) {
                cb(null,'sending something');
            } else {
                cb(null, 'mont blanc');
            }
        };
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-11-14
          • 2015-12-03
          相关资源
          最近更新 更多