簡體   English   中英

如何使用Firebase功能檢查Firebase實時數據庫中是否存在值?

[英]How do you check if value exists within Firebase live database using Firebase Functions?

我正在嘗試通過Firebase設置實時數據庫,並使用Firebase Functions測試其中是否存在隨機值。 任何幫助將不勝感激。

我已經嘗試了下面的代碼,但最終得到“未處理的錯誤事件”。

const functions = require('firebase-functions');
const admin = require('firebase-admin');

exports.Exists = functions.https.onRequest((request, response) => {
  console.log("Hello from Firebase!");
   var result           = '';
   var characters       = 'ABCDEFGHIJKLMNPRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789';
   var charactersLength = characters.length;
   for ( var i = 0; i < 4; i++ ) {
      result += characters.charAt(Math.floor(Math.random() * charactersLength));
   }
   return admin.database().ref().once(result).then(snap => {
  if (snap.exists()) {
    response.send("exists");
  }else{
      response.send(result);
  }
});
  • FireBase名稱

您的數據庫調用混亂了,應該是

admin.database().ref(result).once('value').then(snap => ...)
  • result是您要尋找的關鍵
  • value是您正在監聽“一次”的事件,也可以繼續通過ref().on('value', callback)監聽值的更改ref().on('value', callback)

這是文檔中的相關部分: https : //firebase.google.com/docs/database/web/read-and-write#read_data_once

const functions = require('firebase-functions');
const admin = require('firebase-admin');

admin.initializeApp(functions.config().firebase);

exports.test = functions.https.onRequest((request, response) => {

    return ExistTest();


    function RandCharGen(length){

        var result = '';
        var characters = 'ABCDEFGHIJKLMNPRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789';
        var charactersLength = characters.length;

        for ( var i = 0; i < length; i++ ) {
            result += characters.charAt(Math.floor(Math.random() * charactersLength));
        }

        return result;
    }

    function ExistTest(){
        var result = RandCharGen(4);
    admin.database().ref(result).once('value', (snapshot) => {
          if (snapshot.exists()) {
              ExistTest();
        }
        else{
                response.send(result);
            return result;
        }
        });
    }
});

對於任何想要正確答案或知道更清潔方式的人。

暫無
暫無

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

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