如何使用云功能将新数据推送到Firebase实时数据库中?

时间:2019-05-01 19:58:06

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

每次调用该函数时,如何使用Cloud函数更改Firebase数据库中的实时数据?我有一个名为Points的数据单元,我想在每次部署函数时将Points的值更改为1到10之间的一个随机数。我对使用Firebase真的很陌生,所以我不知道从哪里开始。我看了所提供的大多数文档,但都没有帮助。我尝试了一些尝试,但失败了。请帮助

谢谢

这就是我尝试过的...

exports.userVerification = functions.database.ref('Points')

var ref = database().ref('Points')

var number = (Math.floor(Math.random() * 10) + 1)*10

ref.update(number)

1 个答案:

答案 0 :(得分:1)

您将在documentation中找到有关如何通过发布/订阅触发云功能的所有详细信息。

在官方的Cloud Functions示例中,您还将找到一个非常简单的“ Hello World”示例:https://github.com/firebase/functions-samples/tree/master/quickstarts/pubsub-helloworld

您的云函数将如下所示:

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

exports.randomNbr = functions.pubsub.topic('topic-name').onPublish((message) => {

      var ref = admin.database().ref();

      var number = Math.floor(Math.random() * (10)) + 1;

      return ref.update({ Points: number });

});

请注意,我们返回由update()异步方法返回的Promise,以便向平台指示工作已完成。我建议您观看Firebase视频系列中有关“ JavaScript承诺”的3个视频:https://firebase.google.com/docs/functions/video-series/

还请注意,您不能简单地执行ref.update(number);:您会得到一个错误(Error: Reference.update failed: First argument must be an object containing the children to replace.