第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何避免 Firebase / Cloud Firestore 中的重復數(shù)據(jù)

如何避免 Firebase / Cloud Firestore 中的重復數(shù)據(jù)

絕地無雙 2022-05-26 17:45:13
我正在制作一個網(wǎng)頁,但是當輸入相同的 ID 時應(yīng)該會出現(xiàn)錯誤,但我無法做到。 function save () {    if (validate  = true) {        console.log("exists!")    }else {            var imei = document.getElementById('imei').value;    var marca = document.getElementById('marca').value;    var referencia = document.getElementById('referencia').value;    var precio = document.getElementById('precio').value;    db.collection("phone").add({        Imei: imei,        Marca: marca,        Referencia: referencia,        Precio: precio    })        .then(function (docRef) {            document.getElementById('imei').value = '';            document.getElementById('marca').value = '';            document.getElementById('referencia').value = '';            document.getElementById('precio').value = '';        })        .catch(function (error) {            window.alert("Error adding document: ", error);        });    }}save();function validate () {    firebase.database().ref(`phone/${Imei}/imei`).once("value", snapshot =>     { const imei = snapshot.val();         if (imei){             console.log("user exists!");         }     }); }如果您能告訴我哪里有錯誤,或者最好的解決方案,我將不勝感激
查看完整描述

1 回答

?
藍山帝景

TA貢獻1843條經(jīng)驗 獲得超7個贊

您的代碼存在一些問題:

  1. 您正在使用 構(gòu)建路徑phone/${Imei}/imei,但您的變量名是拼寫的imei(而不是Imei)。與大多數(shù)編程語言一樣,JavaScript 中的大小寫很重要,因此我建議密切注意拼寫和大小寫。

  2. 你沒有validate()在任何地方打電話,這意味著你的支票沒有運行。

  3. 你沒有從validate(). 而且由于您要返回的內(nèi)容來自異步調(diào)用中的數(shù)據(jù)庫,因此您只能使用 promise 或async/來返回它await。這個 aslome 可以保證自己的答案,所以我建議你研究Firebase,異步檢索數(shù)據(jù),如何使用函數(shù)中的 async-await 從異步函數(shù)返回值?以及如何從異步回調(diào)函數(shù)返回值?

  4. 您確實應(yīng)該使用事務(wù)來確保沒有人可以在代碼中的讀寫操作之間聲明 IMEI。

  5. 如果 IMEI 值應(yīng)該是唯一的,最好將其用作而不是屬性值。在此處閱讀更多信息:

結(jié)合所有這些,更好的實現(xiàn)可能類似于:

function save () {

    var imei = document.getElementById('imei').value;

    var marca = document.getElementById('marca').value;

    var referencia = document.getElementById('referencia').value;

    var precio = document.getElementById('precio').value;


    var imeiDocRef = db.collection("phone").doc(imei);


    db.runTransaction(function(transaction) {

        // This code may get re-run multiple times if there are conflicts.

        return transaction.get(imeiDocRef).then(function(imeiDoc) {

            if (imeiDoc.exists) {

                throw `IMEI '${imei}' already exist!`;

            }


            transaction.set(imeiDocRef, { 

                Imei: imei,

                Marca: marca,

                Referencia: referencia,

                Precio: precio

            });

        });

    }).then(function() {

        console.log("Transaction successfully committed!");

        document.getElementById('imei').value = '';

        document.getElementById('marca').value = '';

        document.getElementById('referencia').value = '';

        document.getElementById('precio').value = '';

    }).catch(function(error) {

        console.log("Transaction failed: ", error);

    });

}


查看完整回答
反對 回復 2022-05-26
  • 1 回答
  • 0 關(guān)注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號