我試圖做一個解析雲代碼函數,它檢索一個「Score」,但它的級別和所有者,如果它存在,更新並創建它。 我不能讓它在一個循環內部工作,以重複更新或插入分數列表。在一個循環中解析雲代碼查詢
下面是我改編自https://parse.com/docs/js_guide#promises-chaining的代碼,它重現了我的問題。
我resultMessage輸出:
{"result":" loop loop "}
而不是
{"result":" loop set 100 find set 200 success find loopset 100 find set 200 success "}
Parse.Cloud.define("example2", function(request, response) {
\t var resultMessage = ""
\t var query = new Parse.Query("ScoreTest");
\t var test = ["1", "2"]; // Dumb list to loop over.
\t var promise = Parse.Promise.as();
\t promise = promise.then(function() {
\t \t _.each(test, function(elt) {
\t \t \t resultMessage = resultMessage + " loop ";
\t \t \t query.find().then(function(students) {
\t \t \t \t resultMessage = resultMessage + " set 100 ";
\t \t \t students[0].set("score", 100);
\t \t \t return students[0].save();
\t \t \t
\t \t \t }).then(function(valedictorian) {
\t \t \t \t resultMessage = resultMessage + " find ";
\t \t \t return query.find();
\t \t \t
\t \t \t }).then(function(students) {
\t \t \t \t resultMessage = resultMessage + " set 200 ";
\t \t \t students[0].set("salutatorian", 200);
\t \t \t return students[0].save();
\t \t \t
\t \t \t }).then(function(salutatorian) {
\t \t \t \t \t resultMessage = resultMessage + " success ";
\t \t \t \t \t return Parse.Promise.as();
\t \t \t \t
\t \t \t });
\t \t });
\t }).then(function() {
\t \t response.success(resultMessage);
\t })
\t
});
難道可以接受執行這些並行,即'環環設定100設定100找到找到set200 set200成功success'? – Bergi 2015-04-02 13:57:15
請編輯問題幷包含功能目標的明確說明。文本不完整(需要對類,它們的列,列類型進行描述),需要更清楚地描述查找條件和期望結果。有時,這裏的讀者可以查看代碼來澄清問題的意圖,但發佈的代碼幾乎是不可理解的。 (我意識到這就是爲什麼你在這裏問這個問題,所以讓我們用英文說清楚,以便開始)。 – danh 2015-04-02 17:26:07
@ Bergi:我不認爲我可以這樣做,因爲最終我想要檢索一個分數並使用輸入參數進行更新。如果調用是異步的,我將使用輸入表的最後一個元素的數據更新所有對象。但你可能是對的,我會看看,謝謝! – 2015-04-05 08:54:04