2016-04-29 5 views
0

Ich versuche, ein Objekt abzufragen, addiere 1 zur zurückgegebenen Ganzzahl und speichere dieses Objekt dann mit dem Parse-Server-Cloud-Code in meiner mLabs-Datenbank.Parse Server Cloud Code Objekt speichern

Ich kann 1 erfolgreich zu dem Objekt, das ich möchte, abfragen und hinzufügen, aber ich kann nicht herausfinden, wie Sie dieses erfolgreich in der Datenbank speichern. Ich habe alle was zu einem Parse Server „request timeout“ viele Lösungen versucht

Parse.Cloud.define("addRating", function(request, response) { 
 

 
    var currentRatingQuery = new Parse.Query("StudentNotes"); 
 
    currentRatingQuery.equalTo("objectId", "Y4bBzvsHb1"); 
 
    currentRatingQuery.select("noteRating"); 
 
    currentRatingQuery.find({ 
 
    useMasterKey: true, 
 
    success: function(results) { 
 
     //var noteRating = results.get("noteRating"); 
 
     //noteRating += 1; 
 
     results = Number(results); 
 
     results += 1; 
 
     console.log("NOTE RATINGGGGG: " + results); 
 
     console.log("TYPE OFFFFFFF: " + typeof results); 
 

 

 
     results.set('institution', "TEST INSTITUTION"); 
 
     results.save(null, { 
 
     useMasterKey: true 
 
     }); 
 
     console.log("SAVE SUCCESS", results); 
 
     response.success("rating updated successfully.", results); 
 

 
    }, 
 
    error: function(error) { 
 
     response.error("failed to add 1 to parse cloud code rating. Error: " + error); //THIS GETS CALLED 
 
    } 
 
    }); 
 

 
});

Der obige Code erfolgreich die Datenbank abfragt, aber den Wert nicht zurück zu speichern. Es führt zu einem Parse Server "Request Timeout".

Antwort

2

Mein Problem war syntaktisch, da es einen starken Mangel an Syntax für den Parser-Server-Cloud-Code gibt, weil er dem parse.com-Cloud-Code so ähnlich ist. Der folgende Code ist der Arbeitscode, um ein Objekt abzurufen und das Objekt zu speichern.

Parse.Cloud.define('addNoteRating', function(request, response) { 
 
    var SaveObject = Parse.Object.extend("StudentNotes"); 
 
    var saveObject = new Parse.Query(SaveObject); 
 
    saveObject.equalTo("objectId", request.params.objectId); 
 
    saveObject.first({ 
 
    useMasterKey: true, 
 
    success: function(Objects) { 
 
     Objects.save(null, { 
 
     useMasterKey: true, 
 
     success: function(object) { 
 
      object.increment("noteRating"); 
 
      object.save(); 
 
      console.log("Cloud Code: User note rating has increased by 1.", object); 
 
      response.success('Cloud Code: User note rating has increased by 1.'); 
 

 
     } 
 
     }); 
 
    } 
 
    }); 
 

 
});

+0

Dank! Das hat mir auch nach stundenlangen Debugging geholfen –

1

Timeout durch keine Reaktion hervorrufen kann. Versuchen Sie, eine Antwort hinzuzufügen, wenn API fehlgeschlagen ist, und sehen Sie, was passiert ist.

BTW, wenn Sie welche Antwort, wenn Inkrement Erfolg, Antwort beim Speichern abgeschlossen.

Parse.Cloud.define('addNoteRating', function(request, response) { 
 
    var SaveObject = Parse.Object.extend("StudentNotes"); 
 
    var saveObject = new Parse.Query(SaveObject); 
 
    saveObject.equalTo("objectId", request.params.objectId); 
 
    saveObject.first({ 
 
    useMasterKey: true, 
 
    //this function will get at most one object 
 
    success: function(object) { 
 
     if(object){ 
 
     object.increment("noteRating"); 
 
     object.save(null,{ 
 
      //do not use master key? 
 
      success: function(note){ 
 
      //u should wait the non-blocking call success and finish 
 
      console.log("Cloud Code: User note rating has increased by 1.", object); 
 
      response.success('Cloud Code: User note rating has increased by 1.'); 
 
      }, error: response.error 
 
     }); 
 
     }else{ 
 
     response.error('this student note is not exist'); 
 
      
 
     } 
 
     
 
    }, error: response.error 
 
    }); 
 
});

Wenn dieses Objekt vorhanden ist, können Sie umschreiben nur den Code wie unten

Parse.Cloud.define('addNoteRating', function(request, response) { 
 
    var SaveObject = Parse.Object.extend("StudentNotes"); 
 
    var studentNote = new SaveObject(); 
 
    studentNote.id = request.params.objectId; 
 
    studentNote.increment("noteRating"); 
 
    //student.save(null,{useMasterKey:true}).then(
 
    studentNote.save().then(
 
    function(note){ 
 
     console.log("Cloud Code: User note rating has increased by 1.", object); 
 
     response.success('Cloud Code: User note rating has increased by 1.'); 
 
    }, response.error 
 
) 
 
});

Verwandte Themen