【问题标题】:How do you check if value exists within Firebase live database using Firebase Functions?如何使用 Firebase 函数检查 Firebase 实时数据库中是否存在值?
【发布时间】:2019-04-30 20:37:49
【问题描述】:

我正在尝试通过 firebase 设置一个实时数据库,并使用 Firebase 函数测试其中是否存在随机值。任何帮助将不胜感激。

我尝试了下面的代码,但最终得到了“未处理的错误事件”。

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 名称
    • 价值
    • 价值
    • 价值

【问题讨论】:

    标签: javascript firebase firebase-realtime-database google-cloud-functions


    【解决方案1】:

    你的数据库调用混乱了,应该是

    admin.database().ref(result).once('value').then(snap => ...)
    
    • result 是你要找的钥匙
    • value是你正在监听的事件“一次”,你也可以通过ref().on('value', callback)继续监听值变化

    以下是文档中的相关部分:https://firebase.google.com/docs/database/web/read-and-write#read_data_once

    【讨论】:

      【解决方案2】:
      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;
              }
              });
          }
      });
      
      

      适用于任何想要正确答案或知道更简洁的方法的人。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-14
        • 2020-09-25
        • 2016-09-21
        • 2016-10-20
        • 1970-01-01
        • 1970-01-01
        • 2021-11-14
        • 1970-01-01
        相关资源
        最近更新 更多