Ich habe einen einfachen Cloud-Code-Befehl, um ein Objekt zu erstellen oder zu aktualisieren. Wenn KEINE objectId übergeben wird, erstellt die Routine ein neues Objekt und gibt die Objekt-ID zurück. Wenn die objectId in der Parameterliste vorhanden ist, ruft sie das Objekt ab und aktualisiert die Parameter entsprechend.
Die Routine funktioniert für neue Objekte in Ordnung.
Das object.save()
schlägt fehl, wenn ich versuche, ein Objekt zu aktualisieren, obwohl die Unterroutine object.fetch()
funktioniert.
Fehler: Code = 101, Nachricht = Objekt nicht gefunden.
Ausführliche Serverprotokolle zeigen einen sehr seltsamen PUT
-Befehl ...
PUT / parse / classes / Receipt / [Objekt% 20Object]
Was ich erwarten würde, ist
PUT / parse / classes / Empfang / GJaXcf7fLD
Objekt-ACL ist public r + w
Warum funktioniert object.save()
nicht mit einer gültigen Objekt-ID?
_
Cloud-Code
%Vor%Objekt sollte entsprechend aktualisiert werden
Fehler: Code = 101, Nachricht = Objekt nicht gefunden.
Server
Datenbank
Das Speichern eines neuen Objekts erfolgt zurück
%Vor%Versuch, Objekt zu aktualisieren, gibt
zurück %Vor%Ich habe es dank einiger Hilfe der Parse-Server-Community und des GitHub-Benutzers flovilmart
herausgefundenIm Falle der "Aktualisierung" eines Objekts habe ich einen Wörterbucheintrag für den Beleg eingefügt. Dadurch wurde der Empfang, den ich aktualisieren wollte, erfolgreich abgerufen.
Das Problem war jedoch, dass ich, nachdem ich das Belegobjekt eingezogen hatte und mein Wörterbuch der Eigenschaften durchging, um es zu aktualisieren, wieder auf die Informationen des Belegobjekts stieß. So habe ich versucht, eine Eigenschaft des Empfangs-Zeigers zu meinem Empfang hinzuzufügen, wobei der Zeiger selbst ist! Ugh.
Die allerletzte else-Klausel benötigte eine Bedingung, die den Zeiger auf den Quittung (selbst) NICHT enthielt
%Vor%Tags und Links javascript parse.com parse-server