在一个云功能中从 firebase 数据库中检索多个数据

Posted

技术标签:

【中文标题】在一个云功能中从 firebase 数据库中检索多个数据【英文标题】:Retrieve multiple data from firebase database in one cloud function 【发布时间】:2018-12-04 08:40:23 【问题描述】:

我面临从我的 firebase 数据库中检索单个节点的两个数据值并在我的 javascript 文件中引用它但不知道如何去做的问题。我已经能够从节点(在本例中为“消息”)仅检索一个数据值,但我也想添加“来自”。大多数教程只引用一个,所以我真的很困惑。那么如何获取多个数据值呢? 这是我的代码...

JS 文件

exports.sendNotification7 = functions.database.ref('/GroupChat/Modules/SDevtChat/SDevtChatId/message')
.onWrite(( change,context) =>

// Grab the current value of what was written to the Realtime Database.
var eventSnapshot = change.after.val();
var str = "New message from System Development Group Chat: " + eventSnapshot;
console.log(eventSnapshot);

var topic = "Management.Information.System";
var payload = 
    data: 
        name: str,
        click_action: "Student_SystemsDevt"

    
;

// Send a message to devices subscribed to the provided topic.
return admin.messaging().sendToTopic(topic, payload)
    .then(function (response) 
        // See the MessagingTopicResponse reference documentation for the
        // contents of response.
        console.log("Successfully sent message:", response);
        return;
    )
    .catch(function (error) 
        console.log("Error sending message:", error);
    );
);

【问题讨论】:

【参考方案1】:

您可以从云函数中的任意多个节点中读取数据。但是,只有一个可以触发该功能运行。

要从您的数据库中读取,请使用以下代码:

admin.database().ref('/your/path/here').once('value').then(function(snapshot) 

var value = snapshot.val();

);

您可能希望从触发云函数的同一位置读取。使用 context.params.PARAMETER 获取此信息。对于您发布代码的示例,您的代码将看起来像这样:

admin.database().ref('/GroupChat/'+context.params.Modules+'/SDevtChat/'+context.params.SDevtChatId+'/from').once('value').then(function(snapshot) 

var value = snapshot.val();

);

【讨论】:

【参考方案2】:

只需在 JSON 中触发更高一级的函数:

exports.sendNotification7 = 
functions.database.ref('/GroupChat/Modules/SDevtChat/SDevtChatId')
.onWrite(( change,context) =>

    // Grab the current value of what was written to the Realtime Database.
    var eventSnapshot = change.after.val();
    console.log(eventSnapshot);
    var str = "New message from System Development Group Chat: " + eventSnapshot.message;
    var from = eventSnapshot.from;

    ...

【讨论】:

这就像一个魅力弗兰克!请但是完全引用不同的节点呢? 我的答案地址是从数据库中的其他地方读取的 您可以为此使用 Admin SDK。请参阅 TerPro 的回答或 ***.com/questions/43913139/… 和 ***.com/questions/42868592/… 你好弗兰克。发件人的价值呢?似乎无法检索它。 想通了!谢谢大家!!

以上是关于在一个云功能中从 firebase 数据库中检索多个数据的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中从 Firebase 检索数据的问题

单击 Listview 中的项目时,如何在新活动中从 Firebase 检索数据?

无法从 firebase 数据库中检索数据(云功能)

在Recyclerview Android中从Firebase检索日期

在flutter应用程序中从Firebase检索数据时

(Android 应用程序)有没有办法在 FirebaseRecyclerOptions 查询的 SnapshotParser 部分中从 Firebase 数据库中检索数据?