2015-01-27 3 views
11

Ich habe seit Stunden daran gearbeitet, und ich bin völlig verloren, weil die Loopback-Dokumentation nicht hilfreich ist.LoopBack Remote-Methoden und Zugriff auf Modelldaten

Ich versuche, Anwendungslogik in ein Modell zu schreiben. Die Dokumentation dafür ist here. Leider zeigt das Beispiel nichts anderes als das Weitergeben eines externen Werts an die Remote-Methode und das erneute Senden. Ich würde gerne verstehen, wie man in diesem Kontext eine Abfrage ausführt und auf Modelldaten zugreift, aber ich habe stundenlang gesucht und konnte selbst bei diesen einfachen Aufgaben keine Dokumentation finden. Vielleicht schaue ich nur an die falschen Stellen. Kann jemand helfen?

Antwort

8

Normalerweise können Sie die meisten Dinge tun, die Sie tun möchten, z. B. Abfragen und Zugreifen auf Modelldaten (CRUD-Operationen) über die integrierten Methoden, die allen Modellen zur Verfügung stehen. siehe http://docs.strongloop.com/display/LB/Working+with+data. Das Definieren einer Remote-Methode (angepasster REST-Endpunkt) für diese wäre redundant.

Sie können auf den Standard model CRUD Node APIs (z. B. myModel.create(), myModel.find(), myModel.updateAll()) im Remote-Methodencode zugreifen, wenn Sie möchten.

Sie auch in den Beispiele weiter im Zusammenhang https://github.com/strongloop/loopback-example-app-logic

finden hier ein Beispiel des Ersten Schritte App https://github.com/strongloop/loopback-getting-started App. Es definiert eine Remote-Methode, die eine Reihe arg und druckt den Namen des Coffee-Shop mit dieser ID an die Konsole nimmt:

Dieser Code ist gemeinsam/models/coffeeshop.js:

module.exports = function(CoffeeShop) { 
 
... 
 
    // Return Coffee Shop name given an ID. 
 
    
 
    CoffeeShop.getName = function(shopId, cb) { 
 
    CoffeeShop.findById(shopId, function (err, instance) { 
 
     response = "Name of coffee shop is " + instance.name; 
 
     cb(null, response); 
 
     console.log(response); 
 
    }); 
 
    } 
 
... 
 
    CoffeeShop.remoteMethod (
 
    'getName', 
 
    { 
 
     http: {path: '/getname', verb: 'get'}, 
 
     accepts: {arg: 'id', type: 'number', http: { source: 'query' } }, 
 
     returns: {arg: 'name', type: 'string'} 
 
    } 
 
); 
 
};

Sie können den API Explorer verwenden, um http://0.0.0.0:3000/explorer/#!/CoffeeShops/getName zu laden, geben Sie dann eine Nummer (es gibt nur drei Coffeeshops in der App zuerst) als Abfrageparameter und drücken Sie "Probieren Sie es aus!"

oder einfach nur eine URL wie http://0.0.0.0:3000/api/CoffeeShops/getid?id=1

Rand

+0

Danke für die Antwort, vielleicht gehe ich über die falsche Art und Weise, aber ich denke, meine Frage ist noch einfacher als Sie dachten. Wo sind die Eigenschaften des Modells gespeichert? Wenn ich das "Name" -Attribut eines "Personen" -Modells "console.log" von innerhalb einer Remote-Methode definieren wollte, die in "common/models/Person.js" definiert ist, wie würde ich das tun? Ich kann nichts in der Dokumentation finden, die das erklärt. –

+0

Ich versuchte in einem Kommentar zu antworten, aber meine Bemerkungen waren zu lang. Siehe bearbeitete Antwort oben. Kurz gesagt, Sie können innerhalb der Callback-Funktion auf Eigenschaften des Modells zugreifen ... Hoffe, das hilft! – RandM

+0

Danke für Ihre Hilfe! Ich schätze es! –

2

ich endlich mein Problem entdeckt. Objekteigenschaften müssen in einen Callback der Funktion geladen werden, die die CRUD-Operation aufruft. Die folgende Syntax funktionierte für mich:

+0

Glad Du hast es aussortiert. Entschuldigung, ich konnte nicht früher antworten. – RandM