2015-03-05 5 views
12

Ich baue gerade eine Loopback-Anwendung, die nur ein einziges Modell mit dem Namen Phone hat. Hier ist mein common/models/phone.js Code:Wie kann ich eine Loopback-Remote-Methode mit einem Modellschema erstellen?

module.exports = function(Phone) { 

    // Return a random phone's 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', 
    } 
    }); 

}; 

Wenn ich meine API-Explorer auf Port 3000 nach oben ziehen und meine neu erstellte random API-Aufruf sehen, sehe ich folgendes:

Random API Call in Loopback Explorer

Wie Sie sehen können oben ist mein "Model Schema" leer. Boo!

Was würde Ich mag zu erreichen ist etwas ähnlich der integrierten API-Methoden, die etwa wie folgt aussehen:

Working API Call in Loopback Explorer

Wie man oben sehen kann, ist die „Model-Schema“ zeigt, was Die tatsächliche Ausgabe des API-Aufrufs wird folgendermaßen aussehen.

Ich versuche herauszufinden, wie dies mit meinem Remote-Endpunkt zu erreichen, aber bisher hatte kein Glück.

Alle Vorschläge sind willkommen.

BONUSPUNKTE: Gibt es eine Möglichkeit Loopback einfach zu sagen, dass mein Rückgabewert ist nur ein bereits definiertes Modell? In meinem Fall gebe ich nur ein vorhandenes Telefonmodell zurück, also wäre es schön, Loopback einfach wissen zu lassen und die Dokumentation automatisch zu generieren.

Vielen Dank!

Antwort

12

Versuchen Sie Ihre App mit de folgenden Befehl ausführen:

DEBUG = Loopback: Explorer: routeHelpers Knoten.

Sie werden in der Lage zu sehen, was de in API-Methoden verwenden errichtet Optionen gibt

Sie müssen eine Modellstruktur im gemeinsamen/Modelle Verzeichnis-Parameter in der Rückkehr wie

Erträge definiert verwenden : [{arg:"data",type:"Mymodels",root:true}]

0

Für Ihre Bonuspunkte:

Wenn Sie rufen die remoteMethod() Sie haben das Modell des Schemas Sie zurückgeben möchten angeben:

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

Extra: Wenn das gewünschte Schema eines anderen Modells ist, müssen Sie es auch benötigen, um um "undefinierte" Fehler zu vermeiden:

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

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