我使用解析創建了一個基於回合的繪圖遊戲,您可以與任何人玩。一次只有一個用戶可以玩。有三個轉彎。在玩家的朋友列表中,這一切都可以正常工作 - >您可以開始一個新遊戲,也可以收到一條通知讓您繼續。PARSE - 處理併發請求?
我想實現一個多人模式 - >爲此,我有一個數據庫中的所有可用公共遊戲的單獨列表。如果一個遊戲被公開,我會在該列表中創建一個新的對象並帶有指向遊戲的指針。每次用戶搜索可用遊戲時,他都會查詢該列表,如果找到記錄,我會刪除該特定列表中的公共遊戲對象以使其不能用於其他用戶,並且遊戲繼續。
我想知道以下 - >如何解析處理併發請求? 是否有可能同時搜索多個用戶嘗試刪除同一對象(請參閱下面的代碼)?我已經在我的查詢跳過隨機指標避免這種行爲,但它似乎微不足道..
這裏是我的雲代碼用於處理請求的樣本:
Parse.Cloud.define('findPublicGame', function(req, res) {
var query = new Parse.Query("public");
query.count({
success: function(number) {
if (number == 0) {
// no public games - reject
res.success(number);
} else {
// public game found - handle
query.limit(1)
var randomIndex = parseInt(Math.random() * number);
query.skip(randomIndex);
query.find({
success: function(object) {
// delete public
object[0].destroy({
success: function(_data) {
res.success(_data);
},
error: function(error) {
res.error();
}
});
},
error: function(error, object) {
res.error(error);
}
});
}
},
error: function(error) {
res.error(error);
}
});
});
它是正確的假設試圖銷燬已經銷燬的對象會導致錯誤?
我有公共遊戲對象上添加beforeDelete功能,以檢查它是否仍然可用的想法,但我想保持我現在的要求低的數..
如果任何人都可以啓發我,讚美!
我認爲這是一個明智的舉動,把銷燬功能放在客戶端,客戶端/服務器之間的延遲可能可以幫助一些避免檢索相同的對象..我仍然使用我的雲代碼函數來檢索公共對象,只是在beforeDelete上實現了「檢查是否存在」,它工作正常,我只希望它可以擴展。謝謝你的幫助! 在另一個說明中,parse-server只是實現了liveQueries,我可以用它來檢查用戶是否訂閱了查詢後是否刪除了一個對象。 –