1
我有一個需要增加的firebase的價值,它受競爭條件的限制,所以我寧願一一做。從javascript增加firebase價值,受制於
node: {
clicks: 3
}
我需要設置clicks = clicks + 1
只要clicks < 20
。我可以通過Web API進行一次調用嗎?
我有一個需要增加的firebase的價值,它受競爭條件的限制,所以我寧願一一做。從javascript增加firebase價值,受制於
node: {
clicks: 3
}
我需要設置clicks = clicks + 1
只要clicks < 20
。我可以通過Web API進行一次調用嗎?
見reference documentation for a transaction:
var ref = firebase.database().ref('node/clicks');
ref.transaction(function(currentClicks) {
// If node/clicks has never been set, currentRank will be `null`.
return (currentClicks || 0) + 1;
});
上面簡單地增加值原子,而無需用戶覆蓋其他人的結果,他的選擇。
接下來,確保該值永遠不能> 20:
var ref = firebase.database().ref('node/clicks');
ref.transaction(function(currentClicks) {
// If node/clicks has never been set, currentRank will be `null`.
var newValue = (currentClicks || 0) + 1;
if (newValue > 20) {
return; // abort the transaction
}
return newValue;
});
良好的措施,你還需要設置安全規則,只允許點擊最多爲20個安全規則在Firebase數據庫服務器上強制執行,這樣可確保即使惡意用戶也無法繞過您的規則。根據Firebase documentation on validating data中的示例:
{
"rules": {
"node": {
"clicks": {
".validate": "newData.isNumber() &&
newData.val() >= 0 &&
newData.val() <= 20"
}
}
}
}
您可以使用Firebase驗證規則嗎?像'「.validate」:「newData.val()<20」' –