2015-05-20 91 views
0

任何想法爲什麼這不起作用?它回來了成功的消息,但實際上並沒有更新任何東西。雲代碼查詢問題

我添加使用解析FB用戶,但因爲它沒有一個FUNC添加的用戶名和電子郵件試圖做這種方式。任何幫助非常感謝。

JS

Parse.Cloud.run("test", { objectId: "Q8XRUcL22N", name: "Rich", email: "[email protected]"}, { 
    success: function(results) { 
     console.log(results); 
    }, 
    error: function(error) { 
     console.log(error); 
    } 
}); 

CLOUD CODE:

Parse.Cloud.define("test", function (request, response) { 
    Parse.Cloud.useMasterKey(); 

    var uid; 
    var query = new Parse.Query("_User"); 

    query.count({ 
     success: function (results) { 
      uid = parseInt(results); 

     }, 
     error: function() { 
      response.error("UID lookup failed"); 
     } 
    }); 

    var query = new Parse.Query(Parse.User); 

    query.equalTo("objectId", request.params.objectId); 

    query.first({ 
     success: function (object) { 

      object.set("username", request.params.name); 
      object.set("email", request.params.email); 
      object.set("uid", uid); 
      var acl = new Parse.ACL(); 
      acl.setPublicWriteAccess(false); 
      acl.setPublicReadAccess(false); 
      object.setACL(acl); 
      object.save(); 
      response.success("Success Message"); 
     }, 
     error: function (error) { 
      response.error("Error Message"); 
     } 
    }); 
}); 

感謝

回答

0

對響應調用success()error()停止任何正在進行的時候,包括save()用戶。

此外,它看起來像你想在用戶的用戶的數量在ACL設定的時間記錄。獲取計數還必須與其他操作序列化。 (另外,請注意,只有在用戶數不會下降的情況下,count才能成爲id「uid」,解析對象的id作爲id有什麼問題?)。

大部分的解析函數返回的承諾,並利用他們是不會去疲於巢回調的唯一途徑。所以...

Parse.Cloud.define("test", function(request, response) { 
    Parse.Cloud.useMasterKey(); 
    var uid; 
    var query = new Parse.Query(Parse.User); 
    query.count().then(function(count) { 
     uid = count; 
     return query.get(request.params.objectId); 
    }).then(function(object) { 
     object.set("username", request.params.name); 
     object.set("email", request.params.email); 
     object.set("uid", uid); 
     var acl = new Parse.ACL(); 
     acl.setPublicWriteAccess(false); 
     acl.setPublicReadAccess(false); 
     object.setACL(acl); 
     return object.save(); 
    }).then(function (object) { 
     response.success(object); 
    },function(error) { 
     response.error("Error Message"); 
    }); 
}); 
+0

Thanks Danh,這是有道理的,success()/ Error()將結束函數。另外,我想這個ID可能是我剛剛從MySQL獲得的,所以仍然習慣它。謝謝 –