Как я могу создать удаленный метод 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 знать это как-то и автоматически генерировать документацию.
Спасибо!
Ответы
Ответ 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;
[...]
}