2017-04-21 6 views
0

Ich kämpfe ein wenig mit einem grundlegenden PUT in einem LoopBack-Projekt, aber ich kann keine Informationen über mein Problem finden. Wenn PUT verwendet wird, um einen Eintrag hinzuzufügen, funktioniert alles einwandfrei. Ich gebe einfach meine Daten weiter und es gibt einen neuen Eintrag in der Datenbank. Jetzt möchte ich einen Eintrag ersetzen, wie in der Dokumentation zu PUT beschrieben (Ich verwende den API-Explorer für meine Tests). Meine Idee war, eine 'ID' (zusätzlich zu den geänderten Daten) zu übergeben und LoopBack würde den entsprechenden Eintrag ersetzen. Aber das funktioniert nicht, bekomme ich den Fehler:LoopBack: Wie benutze ich PUT, um einen Eintrag zu ersetzen

The `Model` instance is not valid. Details: `id` can't be set 

Wie kann ich PUT verwenden, um einen Eintrag zu ersetzen?

+0

Übergeben Sie die ID als Teil der Modellnutzlast oder übergeben Sie sie als Parameter? – Acapulco

+0

Ich übergebe es als Teil der Modellnutzlast. – pbouda

+0

Uhmm .. könnte es ein Typenproblem sein? [In diesem Beispiel] (https://loopback.io/doc/en/lb2/PersistedModel-REST-API.html) verwenden sie '{" id ":" 98 "," name ":" L4 ", .. . "Vielleicht übergibst du ein int statt einer Schnur? – Acapulco

Antwort

0

Die Eigenschaft id in der PUT-Nutzlast sollte optional sein. Wenn Sie die Standard-Loopback Modell CRUD Endpunkte verwenden, die während der Modellgenerierung eingerichtet werden, haben Sie zwei Möglichkeiten:

  1. die PUT /ModelName/{id} Option verwenden, wo LB die Modellinstanz auf der Basis der Abfrage-Parameter finden in den übergebenen URL

  2. Verwenden Sie den POST /ModelName/{id}/replace Endpunkt. Dieser Endpunkt ersetzt alle Attribute einer bestimmten Modellinstanz basierend auf id, die an die URL übergeben wurden.

Passing in der id Eigenschaft in der Nutzlast der Anforderung ist für beide Endpunkte optional. Loopback findet die Modellinstanz basierend auf dem Parameter id der URL.

Verwandte Themen