html 更新数据会将新数据插入firebase实时数据库

olqngx59  于 2022-12-02  发布在  其他
关注(0)|答案(1)|浏览(117)

我在代码中使用了update()函数,但它一直在添加新条目,而不是编辑要编辑的数据。

UpdateData1.addEventListener('click', (e) => {
  e.preventDefault();
  var updateCrop = document.getElementById('updateCrop').value;
  var updateDescriptionCrop = document.getElementById('updateDescriptionCrop').value;

  if (document.getElementById('updateCrop').value == '' || document.getElementById('updateDescriptionCrop').value == '') {
    alert("Fields should not be empty");
  } else {

    update(ref(database, "Crops/" + updateDescriptionCrop), {
        Crops: updateCrop,
        CropInfo: updateDescriptionCrop
      })
      .then(() => {
        alert("Crop information successfully updated");

      })
      .catch((error) => {
        const errorMessage = error.message;
        // ..
        alert(errorMessage);
      });

  }

});
rsaldnfx

rsaldnfx1#

让我们假设updateDescriptionCrop是您的密钥。
为了更新db中的实体,您应该执行以下操作:

update(ref(database), {
  ["/Crops/" + updateDescriptionCrop]: {
    Crops: updateCrop,
    CropInfo: updateDescriptionCrop
  }
}).then(() => {
  alert("Crop information successfully updated");
}).catch((error) => {
  const errorMessage = error.message;
  alert(errorMessage);
});

点击此处阅读更多信息。

更新日期:

使用uuid库创建条目时生成随机UUID作为条目的密钥:

const { v4: uuidv4 } = require('uuid');
function writeData(crops, cropDescription) {
  const entryId = uuidv4();
  set(ref(db, 'Crops/' + entryId), {
    Id: entryId,
    Crops: crops,
    CropInfo: cropDescription
  });
}

然后,当您要更新您的条目时,请使用此ID:

update(ref(database), {
  ["/Crops/" + cropId]: {
    Id: cropId,
    Crops: updateCrop,
    CropInfo: updateDescriptionCrop
  }
}).then(() => {
  alert("Crop information successfully updated");
}).catch((error) => {
  const errorMessage = error.message;
  alert(errorMessage);
});

相关问题