【问题标题】:How to update and delete firebase data from table of html如何从 html 表中更新和删除 firebase 数据
【发布时间】:2020-11-21 07:35:36
【问题描述】:

我想更新和删除已经从 html 表格视图中检索到的数据。我尝试以下代码,但 onClick 功能不起作用。

var rootRef = firebase.database().ref().child("products");  //Read data to show in table format
    rootRef.on("child_added", snap => {
    var key = snap.key;
    var description = snap.child("description").val();
    var image = snap.child("image").val();

    $("#table_body").append("<tr id='"+snap.key+"'><td>"+ key +"</td><td>" + description + "</td><td>" + image 
                            +"</td><td><button onclick='"+updateData()+"'>Update</button></td><td>"
                            +"</td><td><button onclick='"+deleteData()+"'>Delete</button></td><td>"
                            +"</td></tr>");
    });

表格显示完美,但按钮不起作用。我附上一张图片来清除我的问题。

如何使用表更新和删除 Firebase 数据。我想提示一个对话框来更新和删除特定的数据,但是我该怎么做呢?

【问题讨论】:

  • 你不想传递执行的函数,所以删除() 看看是否有帮助?例如onclick=deleteData,而不是onclick=deleteData()
  • 您应该传递函数名称的完整字符串。所以这里应该是&lt;button onclick='updateData()'&gt;

标签: javascript html firebase firebase-realtime-database


【解决方案1】:

您需要将与表格行对应的快照的key(即snap.key)传递给您的updateData()deleteData()函数,如下所示:

  var rootRef = firebase.database().ref().child('products'); //Read data to show in table format
  rootRef.on('child_added', (snap) => {
    
    var key = snap.key;
    var description = snap.child('description').val();
    var image = snap.child('image').val();

    $('#table_body').append(
      "<tr id='" +
        snap.key +
        "'><td>" +
        key +
        '</td><td>' +
        description +
        '</td><td>' +
        image +
        "</td><td><button onclick=updateData('" +
        snap.key +
        "')>Update</button></td><td>" +
        "</td><td><button onclick=deleteData('" +
        snap.key +
        "')>Delete</button></td><td>" +
        '</td></tr>'
    );
  });

  function deleteData(key) {
    rootRef
      .child(key)
      .remove()
      .then(function () {
        console.log('Remove succeeded.');
      })
      .catch(function (error) {
        console.log('Remove failed: ' + error.message);
      });
  }

  function updateData(key) {
    rootRef
      .child(key)
      .update({ foo: 'bar' })
      .then(function () {
        // ...
      })
      .catch(function (error) {
        // ...
      });
  }

请注意,当您删除一行时,您的前端不会更新,因为您使用了 'child_added' 事件。

【讨论】:

  • 感谢您的回复,但此代码显示Uncaught SyntaxError: missing ) after argument list 错误!!我该怎么办 ?请帮忙!
  • 您应该查看出现此错误的行并分析其发生原因。
  • index.html:1 但如果我删除 snap.ref。这个错误消失了。我收到了来自 1 号产品的 https://mybistro.firebaseio.com/products/1 这个回复。
猜你喜欢
  • 1970-01-01
  • 2020-03-10
  • 2018-08-26
  • 2022-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-22
  • 1970-01-01
相关资源
最近更新 更多