簡體   English   中英

在 Firebase 中增加節點時出現“超出最大調用堆棧大小”

[英]Getting 'max call stack size exceeded' when incrementing a node in Firebase

我正在嘗試將 firebase 中的“周”值增加 1。

我一直在嘗試的一種解決方案是:

var ref = db.ref();
    ref.on('value', function (data) {
        var week = data.val().week + 1;
        ref.update({
            week
        });
    });

但它會引發“超出最大調用堆棧大小”錯誤(即使 firebase 仍會適當更新)

我也試過

var ref = db.ref('week');
    ref.on('value', function (data) {
        var week = data.val();
        ref.set(week+1);
    });

這也有效,但會引發相同的錯誤

有人可以提供一個不會引發錯誤的解決方案嗎? 謝謝

原因是因為您正在使用on()讀取數據。 當您使用 on() 時,您正在設置一個偵聽器,該偵聽器會在該位置的數據發生變化時被調用。 所以你寫的內容是這樣的:

  1. 收聽位置“周”
  2. 當該值已知或已更改時,從快照中獲取
  3. 將值增加 1,並將其寫回 'week'
  4. 由於“week”的值已更改,請轉到第 2 步,以便偵聽器可以處理更改。

這實際上是一個無限循環。

如果您只想增加一次,請使用once()而不是 on() 讀取數據一次

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM