簡體   English   中英

如何使用 Firebase 函數中的 firebase 實時數據庫? (電報機器人)

[英]How to work with firebase realtime database from Firebase Functions? (Telegram Bot)

我想通過 Telegram bot 使用 Telegraf 存儲和接收來自 firebase實時數據庫的數據。

我為此使用Firebase 函數/雲函數。

現在在數據庫上存儲數據正在工作,但我不知道如何從 firebase 獲取數據,然后將其作為電報消息發送。

以下是 /database 命令的響應

在此處輸入圖像描述

const functions = require('firebase-functions');
const admin = require('firebase-admin');
const Telegraf = require('telegraf');
admin.initializeApp();

const bot = new Telegraf(functions.config().telegram_token.key);
bot.hears('hello', (ctx) => ctx.reply('Hi from Firebase Function!'));

bot.command('database', (ctx) => {
    // store data on firebase realtime database - it's working
    admin.database().ref('users/' + ctx.message.chat.id).set({
        username: ctx.message.from.first_name,
        email: 'test@test.gmail.com',
      });
    // HOW TO? get data from firebase realtime database
    const userId = ctx.message.chat.id;
    const dataFromDb = admin.database().ref('users/' + userId).once('value');
    ctx.reply(`Data from firebase: ${dataFromDb}`);
});

bot.launch();
exports.bot = functions.region('europe-west1').https.onRequest((req, res) => {
    bot.handleUpdate(req.body, res).then( (rv) => !rv && res.sendStatus(200));
});

有人可以分享有用的例子嗎? :)

感謝您的關注,問候!

從 Firebase 讀取數據是一個異步操作,因此您需要等待它完成:

const dataFromDb = await admin.database().ref('users/' + userId).once('value');

此外,您需要從返回的快照中獲取值,而不是發回整個快照:

ctx.reply(`Data from firebase: ${dataFromDb.val()}`);

暫無
暫無

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

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