我正在開發一個使用 firebase 來檢查和更新實時資料庫上的值的 html(和 vanilla JS)網路應用程式,我不斷收到很多錯誤,但仍然無法弄清楚我哪里出錯了。對不起,我是 JS 和 firebase 的新手。

相關html代碼(表格內的表格):
<form method="post" id="frmContact">
<table style="width:50%">
<tr>
<th></th>
<th></th>
</tr>
<tr>
<td><input type="text" id="cedula" name="cedula" placeholder="Cédula (tuya)" size="25" type="number" minlength="4" maxlength="10" required><br></td>
<td><input type="text" id="nv" name="nv" placeholder="#v" size="2" type="number" minlength="1" maxlength="1" required></td>
</tr>
<tr>
<td><input type="text" id="telefono" name="telefono" placeholder="Teléfono de tu conductor" size="25" type="number" minlength="10" maxlength="10" required><br></td>
<td></td>
</tr>
<tr>
<td><input type="submit" value="Envíar" name="submit"></td>
<td></td>
</tr>
</table>
</form>
正文結束后的JS:
import {initializeApp} from "https://www.gstatic.com/firebasejs/9.12.1/firebase-app.js";
const firebaseConfig = {
apiKey: ...,
authDomain: ...,
databaseURL: ...,
projectId: ...,
storageBucket: ...,
messagingSenderId: ...,
appId: ...
};
const app = initializeApp(firebaseConfig);
import {getDatabase,ref,set,get,child} from "https://www.gstatic.com/firebasejs/9.12.1/firebase-database.js";
const dbRef = ref(getDatabase); // LINE 509 (ERROR)
document.getElementById('frmContact').addEventListener('submit', function(e) {
let v = ''.concat(document.getElementById('cedula').value, document.getElementById('nv').value)
let p = ''.concat(document.getElementById('telefono').value)
if (child(dbRef,'vouchers/' v) == '1' && child(dbRef,'phoneNumber/' p) != null) {
set(ref(db, 'vouchers/' v), '0');
set(ref(db, 'phoneNumber/' p, child(dbRef,'phoneNumber/' p) 1));
window.alert("Felicidades, tu viaje ha sido pagado con éxito a " document.getElementById('telefono'));
} else if (child(dbRef,'vouchers/' v) == '0') {
window.alert("Este voucher promocional ya fue redimido");
} else if (child(dbRef,'vouchers/' v) == '1') {
window.alert("Este teléfono no está asociado a ningún conductor");
} else {
window.alert("Este voucher promocional no es válido");
};
document.getElementById('frmContact').reset();
});
資料庫如下所示:
{
"phoneNumber": {
"0123456789": "0",
"9876543210": "0",
},
"vouchers": {
"00000000001": "1",
"00000000002": "1",
"00000000003": "1",
"00000000004": "1",
"00000000005": "1",
"00000000006": "1",
"00000000011": "1",
"00000000012": "1",
"00000000013": "1",
"00000000014": "1",
"00000000015": "1",
"00000000016": "1"
}
}
我試過改變
import {getDatabase,ref,set,get,child} from "https://www.gstatic.com/firebasejs/9.12.1/firebase-database.js";
const dbRef = ref(getDatabase);
至
import {getDatabase,ref as _ref,set,get,child} from "https://www.gstatic.com/firebasejs/9.12.1/firebase-database.js";
const dbRef = _ref(getDatabase);
我只是想用資料庫驗證'憑證'(cedula #v)尚未使用(它的關聯值為1),'phoneNumber'(Telefono del導體)存在,如果是這樣,請更改'憑證'的值為 0,并將與 'phoneNumber' 關聯的值加 1。
uj5u.com熱心網友回復:
該ref()函式將資料庫實體作為引數,而不是getDatabase函式本身。
const app = initializeApp(firebaseConfig);
const db = getDatabase();
const dbRef = ref(db, "path/to/node");
此外,該child()函式實際上并不從 Firebase 服務器獲取資料。您必須使用get()函式來獲取值。嘗試重構代碼,如下所示:
document.getElementById('frmContact').addEventListener('submit', async function(e) {
let v = ''.concat(document.getElementById('cedula').value, document.getElementById('nv').value)
let p = ''.concat(document.getElementById('telefono').value)
console.log('v:', v)
console.log('p:', p)
const voucherVal = (await get(ref(db, 'vouchers/' v))).val();
const phoneVal = (await get(ref(db, 'phoneNumber/' p))).val();
console.log('voucherVal:', voucherVal);
console.log('phoneVal:', phoneVal);
if (voucherVal == '1' && phoneVal != null) {
await set(ref(db, 'vouchers/' v), '0');
await set(ref(db, 'phoneNumber/' p, phoneVal 1));
window.alert("Felicidades, tu viaje ha sido pagado con éxito a " document.getElementById('telefono'));
} else if (voucherVal == '0') {
window.alert("Este voucher promocional ya fue redimido");
} else if (voucherVal == '1') {
window.alert("Este teléfono no está asociado a ningún conductor");
} else {
window.alert("Este voucher promocional no es válido");
};
document.getElementById('frmContact').reset();
});
查看檔案以獲取更多資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/521529.html
標籤:Google Cloud Collective javascripthtml火力基地firebase-实时数据库
