Tag: google cloud functions

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, { […]

是否可以在本地testingFirebase触发器?

使用firebase-functions与节点和exports.foo = functions.database.ref('/object').onWrite(event => {}); 。 我可以部署到云和testing就好了…我可以很容易地在本地使用firebase serve –only functionstestingHTTPtypes的firebase serve –only functions 。 但是,我没有看到本地testing触发器的方法。 可能吗? 怎么样?

如何在Cloud Functions Firestore中处理读写操作

我有点困惑如何重构我的代码读取和写入没有嵌套的承诺。 在写入对象时,如果该对象有一个标志设置,我想用新的计数来更新它的“相关”对象。 我有两个问题。 1)嵌套承诺从读取然后写入。 2)我应该回来什么 exports.updateRelationshipCounts = functions.firestore .document('masterProduct/{nfCode}').onWrite((event) => { //on writing of record: var newProduct = event.data.data(); if (newProduct.isGlutenFreeYN === 'Y') { console.log('Gluten Free'); //Update GF count in the Brand Object: var db = admin.firestore(); var docRef = db.collection("masterBrand").doc(newProduct.brandNFCode); var doc = docRef.get() .then(doc => { doc.glutenFreeCount = doc.glutenFreeCount + 1 docRef.set(newProduct.brand) .then(function […]

Firebase云function与云Firestore的麻烦

我在以前的项目中使用过这个Firebase数据库代码: const getDeviceUser = admin.database().ref(`/users/${notification.to}/`).once('value'); 我现在正试图将其转换为Firestore。 我基本上是试图让我的用户fcm当通知正在发送。 我已经尝试了很多东西,但还没有看到实现这一目标的新方法。 编辑:这是我的代码。 exports.sendFavoriteNotification = functions.firestore.document('users/{userUid}/notifications/{notificationId}').onCreate(event => { const notification = event.data.data(); const user = event.params.userUid; const getDeviceUser = admin.database().ref(`/users/${notification.to}/`).once('value'); // Get the follower profile. const getProfilePromise = admin.auth().getUser(notification.sender); return Promise.all([getDeviceUser, getProfilePromise]).then(results => { const tokensSnapshot = results[0]; const liker = results[1]; // Check if there are any device […]

Google云端存储的Firebase云端functionAPI错误

随着Firebase云端function的推出,我们正在考虑将当前的一些node.js服务器端代码移到云端function。 我遇到的一个问题是将文件从GCS存储区下载到磁盘上的临时文件,然后通过电子邮件将其作为附件(使用mailgun-js)发送。 导致我悲伤的那段代码是: return mkdirp(tempLocalDir).then(() => { const bucket = gcs.bucket(gcsBucket); const tempFilePath = tempLocalDir + gcsFile; return bucket.file(gcsFile).download({ destination: tempFilePath }).then(() => { console.log('File downloaded locally to', tempFilePath); var messageSubject = "Test"; var messageBody = "Test with attach"; var mailgunData = { from: , to: agentEmail, subject: messageSubject, html: messageBody, attachment: tempFilePath, }; mailgunAgent.messages().send(mailgunData, […]

在每次执行中发送多个推送通知的Firebase函数中返回*的内容?

我正在使用单个的Firebasefunction向我的Android用户发送多个推送通知。 每个通知的详细信息都将写入我的Firebase数据库中的date和时间。 我使用cron通过http请求来触发此Firebasefunction。 我的问题是,Firebase函数应该如何返回以完成所有Firebase节点(代表通知)的循环并完成发送所有通知? 这是我现在所拥有的。 它在发送第一个通知之后退出。 我想要的是完成查看所有Firebase子节点并为每个节点发送通知。 我不明白Promise的想法足以找出在多个推送通知的情况下返回什么。 这也没有帮助,我几乎完全忘记了如何写javascript。 exports.sendHourlyNotifications = functions.https.onRequest((req, res) => { const dateStr = req.query.date; const hourStr = req.query.hour; console.log('sendHourlyNotifications', 'date: ' + dateStr + " hour: " + hourStr); const parentRef = admin.database().ref(); const notifRef = parentRef.child('all-notifications'); const hourRef = notifRef.child(dateStr).child(hourStr); return hourRef.once('value').then(snapshot => { const updates = {}; snapshot.forEach(function(childSnapshot) […]