Articles of google cloud functions

我应该如何在Firebase的云端函数中复制Firebase队列数据属性?

Firebase队列使用以下属性来跟踪处理: _state _state_changed _owner _progress _error_details _id 我正在将一些Firebase队列代码迁移到Firebase的Cloud Functions。 我将如何获得_owner属性的等效数据属性? 另外,考虑到这个属性主要是为了缓解并发性问题,Cloud Functions是否已经以另一种方式解决了这个问题,使我的实现不必要?

使用Firebasefunction更新存储更改上的Firebase数据库

我试图在我的Android应用程序中实现configuration文件图片function。 所以我使用了来自Firebase的“ 生成缩略图”样本。 所以每当我上传一个完整大小的图片,它会为我生成缩略图。 但是我想要在缩略图生成后更新我的实时数据库中的缩略图的URL。 const functions = require('firebase-functions'); const mkdirp = require('mkdirp-promise'); const gcs = require('@google-cloud/storage')(); const spawn = require('child-process-promise').spawn; const LOCAL_TMP_FOLDER = '/tmp/'; // Max height and width of the thumbnail in pixels. const THUMB_MAX_HEIGHT = 100; const THUMB_MAX_WIDTH = 100; // Thumbnail prefix added to file names. const THUMB_PREFIX = 'thumb_'; /** […]

节点不会从Firebase数据库中移除?

我有以下数据结构: 不幸的是,“天”不会从下面的代码中删除数据库。 我目前的代码: const functions = require('firebase-functions'); const admin = require('firebase-admin'); admin.initializeApp(functions.config().firebase); exports.deleteOldItems = functions.database.ref('/path/to/items/{pushId}') //irrelevant to the question .onWrite(event => { var ref = event.data.ref.parent; // reference to the items var now = Date.now(); var cutoff = now – 2 * 60 * 60 * 1000; var oldItemsQuery = ref.orderByChild('timestamp').endAt(cutoff); return oldItemsQuery.once('value', function(snapshot) { […]

通知不会出现在应用程序的背景状态和死亡状态

我试图在上传post时将通知推送给应用的最终用户。 它在应用程序处于前景时工作正常,但当应用程序在后台或被杀害时不显示。 有什么办法来显示应用程序被杀害或在后台运行的通知。 这里是我使用的node.js代码 const functions = require('firebase-functions'); let admin = require('firebase-admin'); admin.initializeApp(functions.config().firebase); exports.sendPush = functions.database.ref('/promos').onWrite(event => { var topic = "deals_notification"; let projectStateChanged = false; let projectCreated = false; let projectData = event.data.val(); if (((event.data.numChildren())-(event.data.previous.numChildren()))>0) { let msg="notification arrived" let payload = { notification: { title: 'Firebase Notification', body: msg, sound: 'default', badge: '1' […]

如何从服务器端的Firebase数据库中检索上次创build的对象

如果这是非常简单的,我很新的Firebase云function。 我试图在我的数据库中接收最新的推送对象。 不幸的是,这个代码返回已经在'/ customers'的数据库中被推入的每个对象。 我已经尝试过了,但是那根本没有做任何事情。 exports.newCustomer = functions.database.ref('/customers/').onWrite(event => { console.log(event.data.val()); });

Firebase工具:以服务帐号login

我无法find如何代表服务帐户部署Firebase项目(function)的方式。 在文档页面上都没有说什么,也没有发现他们的错误跟踪器没有任何关系。 如上所述,我运行firebase login:ci命令,但后来我需要login自己 – 我想login为服务帐户。 这种function可以使用gcloud工具,但正如文档中所述 , 使用Firebase SDK for Cloud函数编写的云function无法使用gcloud命令行工具进行部署,反之亦然。

成功sendToDevice后,Firebase云消息传递不起作用

我使用Firebase云端function通过云端消息向iOS设备发送通知。 sendToDevice方法工作良好,并返回成功承诺,在Firebase函数日志中没有任何错误或警告,但在iOS上,不显示通知。 如果我通过Firebase通知信息中心发送通知,该通知很有用,并且会在设备上显示通知。 我不知道我在哪里可以有bug。 有可能是iOS应用程序端的错误,即使它像我说的那样工作? Firebaseconfiguration: var functions = require('firebase-functions'); var admin = require('firebase-admin'); var config = functions.config(); admin.initializeApp(functions.config().firebase); 部分云function: APP.services.firebase.admin.database().ref('tokens/' + userId).once('value', function(snapshot) { var userDevicesTokens = []; snapshot.forEach(function(childSnapshot) { userDevicesTokens.push(childSnapshot.key) }); if (userDevicesTokens.length === 0) { console.warn('No tokens for user'); return; } var payload = { data: { title: options.title, text: options.text, type: […]

Firebase的云端function:将整个数据库读入内存

我想将整个Firebase数据库从后端Cloud Function中读取到variables中,如下所示: exports.transformUserData = functions.https.onRequest((request, response) => { admin.database().ref('/').on('value', function (snapshot) { var dbData = snapshot.val(); … }); … }); 这安全吗? (从内存或美元成本的angular度来看,速度在这种情况下不是问题)。 我预计,由于内存不足错误,一旦数据库增长,函数就会崩溃。 如果是这样,在什么样的内存限制下,我们可以期望它崩溃? (例如10MB )。 提前感谢您的任何build议!

如何从Firebase数据库获取值并将其分配给Firebase云端函数中的值?

所以我使用firebase作为一个演示应用程序的后端,我喜欢这个堆栈,但我挂在一个问题上,我无法弄清楚如何从数据库中检索值(我已经有钥匙就好)。 简而言之,我正在从一个设备发送信息,其中包含正在尝试访问的其他设备的“友好名称”。 function代码如下所示: exports.connectMe = functions.https.onRequest((req, res) => { cors(req, res, () => { admin.database().ref('calls/' + req.body.id + '/').set({ target: req.body.target, caller: req.body.caller, time: req.body.time }); const target = req.body.target; console.log(`target: ${target}`); const targetCall = admin.database().ref(`tokens/${target}/token`); console.log(targetCall); // const targetValue = targetCall.val(); res.status(200).send("Thanks For The Call!"); }); }); variables,targetCall正确地指向我想要达到的数据库条目,但我无法提取我的生活价值。 位于admin.database.ref的令牌需要放在一个http请求中。 我如何获得价值? 注释掉的代码显示了我想要存储的variables,但是我知道.val()不是一个引用方法。 为了logging, admin被设置为require('firebase-admin'); 在代码之前。

从Firebase云端function连接到条带时出错

我正在尝试使用Firebase和Stripe从我的Android应用程序处理信用卡付款。 我已经在客户端上获取了一个Stripe标记,并且在我的Firebase Cloud Function中使用了一个数据库触发器来捕获新订单的发布时间。 这是我的function代码。 const stripe = require('stripe')('sk_test_XXXXXXXXXXXXXXXXXXXXXXXX'); return admin.database() .ref() .child('orders') .child(userId) .child(orderId) .child('token') .once('value') .then(snapshot => { return snapshot.val(); }) .then(token => { const amount = order.amount; console.log('Amount:', amount); console.log('token:', token.id); const idempotency_key = orderId; const source = token.id; const currency = 'usd'; const charge = {amount, currency, source}; return stripe.charges.create(charge, { […]