Подтвердить что ты не робот

Как я могу создать удаленный метод Loopback с модельной схемой?

В настоящее время я создаю приложение loopback, которое имеет только одну модель с именем Phone. Здесь мой код common/models/phone.js:

module.exports = function(Phone) {

  // Return a random phone data.
  Phone.random = function(callback) {
    return callback(null, {
      id: '12345',
      number: '+18182179222',
      name: 'Randall Degges'
    });
  };

  Phone.remoteMethod('random', {
    description: 'Return a random phone.',
    accepts: [],
    returns: [
      //{ type: 'object', root: true, description: 'return value' },
      { arg: 'id', type: 'string', description: 'phone id', required: true, root: true },
      { arg: 'number', type: 'string', description: 'phone number', required: true, root: true },
      { arg: 'name', type: 'string', description: 'phone name', required: false, root: true }
    ],
    http: {
      verb: 'get', path: '/random',
    }
  });

};

Когда я вытаскиваю свой API-интерфейс API на порт 3000 и просматриваю недавно созданный вызов API random, я вижу следующее:

Random API Call in Loopback Explorer

Как вы можете видеть выше, моя "Модельная схема" пуста. Booo!

То, что я хотел бы сделать, похоже на встроенные методы API, которые выглядят примерно так:

Working API Call in Loopback Explorer

Как вы можете видеть выше, "Модельная схема" показывает, как будет выглядеть фактический вывод вызова API.

Я пытаюсь понять, как это сделать с моей удаленной конечной точкой, но до сих пор не повезло.

Любые предложения приветствуются.

БОНУСНЫЕ ТОЧКИ: Есть ли способ просто указать Loopback, что мое возвращаемое значение - это уже определенная модель? В моем случае все, что я делаю, это возвращение существующей модели телефона, поэтому было бы неплохо просто позволить Loopback знать это как-то и автоматически генерировать документацию.

Спасибо!

4b9b3361

Ответ 1

Попробуйте запустить приложение с помощью следующей команды:

DEBUG = loopback: explorer: routeHelpers node.

вы сможете увидеть, какие функции возврата используют встроенные методы API.

Вы должны использовать структуру модели, определенную в каталоге common/models в параметре return, например

возвращает: [{arg:"data",type:"Mymodels",root:true}]

Ответ 2

Для ваших бонусных очков:

Когда вы вызываете remoteMethod(), вы должны указать модель схемы, которую хотите вернуть:

returns: { arg: 'data', type: 'Phone', root: true}

Дополнительно: если требуемая схема относится к другой модели, вы также должны ее потребовать, чтобы избежать ошибок < undefined:

module.exports = function(Model1) {
     var app = require('../../server/server');

     Model1.someMethod = function(args, cb) {
         var Model2 = app.models.Model2;
             [...] 
         }