2015-09-19 10 views
8

Ich habe ein seltsames Problem hier. Ich habe ein Projekt mit Parse.com als Backend erstellt (unter Verwendung von Cloudcode, um einige Dinge zu überprüfen, wenn eine Verbindung zur Datenbank hergestellt wird). Alles funktioniert genauso wie es sollte.Parse request.object.get ("KEY") liefert immer undefined

Aber hier kommt das Problem. Ein anderer Entwickler hat mir berichtet, dass etwas nicht stimmt, weil er jedes Mal "undefiniert" wird, wenn er in CloudCode versucht, request.object.get('KEY') anzurufen. Dieser Entwickler verwendet genau die gleiche Codebasis wie ich.

Also entschied ich mich, es mir anzuschauen. Während mit meinem Parse-Konto jede Anwendung einwandfrei funktioniert (sogar neu erstellte), scheint mit dem Parse-Konto des anderen Entwicklers keine einzige neue Anwendung, die wir erstellt haben, mit dem exakt gleichen Code zu arbeiten. Und es wird noch seltsamer - es entsteht ein komplett neues Parse-Konto und eine neue Anwendung erzeugt die gleichen Fehler, während mein persönliches Konto und meine Anwendungen weiterhin gut funktionieren.

Also, was ist das Problem? Wir verwenden CloudCode, und hier ist ein Beispielcode (in Javascript) eine before Methode:

Parse.Cloud.beforeSave('Activity', function(request, response) { 
    var currentUser = request.user; 
    var objectUser = request.object.get('fromUser'); 
    if(!currentUser || !objectUser) { 
    response.error('An Activity should have a valid fromUser.'); 
    } else { 
    response.success(); 
    } 
}); 

Und jedes Mal request.object.get('KEY') kehrt undefined, für jeden Schlüssel, den ich zuvor in dem iOS-Code definiert, bevor die PFObject zu. Beachten Sie, dass mit meinem persönlichen Konto alles in Ordnung ist ...

Ich habe bereits this Thread gesehen, aber das Löschen von ACLs hat den Trick nicht gemacht. request.object.get() bleibt undefiniert, während request.user für jeden getesteten Parse-Account außer meinem definiert ist.

EDIT 1

Ich hatte auch einen Blick auf das Aktivitätsobjekt, kurz bevor es hochgeladen wird, und es werden alle Felder richtig eingestellt.

EDIT 2

Nach dem Cloud-Code vollständig zu entfernen, werden die Objekte korrekt analysieren werden hochgeladen, wobei alle Felder der Art, wie sie über die iOS-Client festgelegt wurden. Es scheint also, dass mit Parse's Cloud-Code etwas nicht stimmt, aber sobald ein Objekt den Cloud-Code passiert, verliert es alle seine Felder.

+0

Können Sie zeigen, was in 'request.object' ist? – raina77ow

+0

'request.object' ist nicht definiert, es ist einfach nicht da (für den anderen Entwickler ist mein Konto noch in Ordnung) - aber' request.user' existiert. Wenn das Objekt den Cloudcode nicht übergibt, ist alles vorhanden, alle Felder sind korrekt eingestellt. –

Antwort

8

Endlich konnte ich das lösen. Dies ist definitiv ein Fehler in Parse's Javascript SDK. Ich habe die Javascript SDK-Version in der global.json zurück auf Version "1.4.2" anstatt auf "neustes" geändert, diese in den Cloudcode-Ordner hochgeladen und alles normalisiert.

Sie können auch andere Versionen testen, vielleicht funktioniert v1.5.0 auch, aber sobald ich herausgefunden habe, dass v1.4.2 gut funktioniert, habe ich keine neueren Versionen getestet.

EDIT

Also, ich entdeckte, dass Parse etwas in ihrem Kommandozeilen-Tool geändert haben muss. Es scheint, dass die Datei global.json nicht mehr vorhanden ist, wenn Sie Ihren CloudCode-Ordner mit der neuesten Version des Befehlszeilentools erstellen. Sie können es jedoch manuell erstellen und den vollständigen Ordner in Ihre Parse-App hochladen.Diese

ist, wie mein CloudCode Ordner aussieht, nur zum Beispiel: CloudCode Ordner enthält drei Unterordner

• Wolke - Cloud-Code-Dateien enthalten

• Config - mit dem global.json Datei

• public - enthält die Datei index.html

Die Datei global.json enthält folgende Codezeilen:

{ 
    "global": { 
    "parseVersion": "1.4.2" 
    }, 
    "applications": { 
    "YOUR_PARSE_APPS_NAME": { 
     "applicationId": "YOUR_APP_ID", 
     "masterKey": "YOUR_APP_MASTER_KEY" 
    }, 
    "_default": { 
     "link": "YOUR_PARSE_APPS_NAME" 
    } 
    } 
} 
+0

Gute Arbeit! Stellen Sie sicher, dass Sie dies als Fehler melden, damit das Parse-Team es beheben kann. – Russell

+0

Ich habe denselben Fehler. Wie haben Sie global.json geändert? wo kann ich es finden? – mert

+0

fand es in der .parse.local versteckte Datei und änderte 1.4.2 und alles ist in Ordnung, vielen Dank, gerettet meinen Tag. :) – mert

Verwandte Themen