Tag: firebase

Firebase云function与批量更新不一致

我有我的firebase云function,我在这里调用我的外部api终点。 const functions = require('firebase-functions'); var admin = require("firebase-admin"); admin.initializeApp(functions.config().firebase); var request = require('request'); var moment = require('moment'); var rp = require('request-promise'); var db = admin.database(); exports.onCheckIn = functions.database.ref('/news/{newsId}/{entryId}') .onCreate(event => { console.log("Event Triggered"); var eventSnapshot = event.data.val(); request.post({ url: 'http://MyCustomURL/endpoint/', form: { data: eventSnapshot.data } }, function(error, response, body){ console.log(response); }); }) 我正在使用Blaze的计划,这是完全正常的。 但问题是,当我创build批量数据(大约50到100个条目)时,对我的自定义url的HTTP请求无法正常工作。一个或两个HTTP请求正在被跳过。 […]

Firebase Admin Nodejs找不到模块service_account.json

我用“node firebasedb.js”开始我的节点。 我的firebasedb.js包含这个代码: var admin = require("firebase-admin"); var serviceAccount = require("service_account.json"); // Initialize Firebase var config = { credential: admin.credential.cert(serviceAccount), apiKey: "<api key>", authDomain: "<auth domain>", databaseURL: "<database url>", storageBucket: "<storage bucket>", }; admin.initializeApp(config); 当我运行节点时,我在.json文件所在的目录中。 但它说 Error: Cannot find module 'service_account.json'

如何使用Firebase云function存储制作文件夹

我怎样才能使文件夹“职位”? 存储桶 – > gs://app.appspot.com/posts 码 exports.generateThumbnail = functions.storage.object() .onChange(event => { const object = event.data const filePath = object.name const fileName = filePath.split('/').pop() const fileBucket = object.bucket; const bucket = gcs.bucket(fileBucket) const tempFilePath = `/posts/${fileName}` return bucket.file(filePath).download({ destination: tempFilePath }) .then(() => { console.log('image downloaded locally to', tempFilePath) return spawn('convert', [tempFilePath, '-thumbnail', '400×400>', tempFilePath]) […]

如何通过Firebase Admin与代理连接到Firebase?

目前,我正在使用Firebase Admin SDK在NodeJS服务器端应用程序中连接Firebase数据库。 但我没有find通过代理设置连接Firebase的选项,或者它可以检测到我的系统HTTP_PROXY环境variables。 当我通过node index.js运行节点脚本,并得到一些像这样的超时消息(我知道在我的工作networking中,我无法直接连接到Firebase)。 Error: Credential implementation provided to initializeApp() via the "credential " property failed to fetch a valid Google OAuth2 access token with the following error: "connect ETIMEDOUT 216.58.200.237:443". at ….erver\node_modules\firebase-adm in\lib\firebase-app.js:74:23 at process._tickCallback (internal/process/next_tick.js:103:7) 我也使用浏览器通过代理访问Firebase控制台,它的工作原理。 但是如何在NodeJS服务器端脚本中解决这个问题呢?

Firebase在一个队列上排队多个规格都会被执行,或者被错误的执行

我有一个Firebase队列和两个规格,在同一个队列和客户端上,我将队列中的start状态作为只读read_write_start进行推送,无论是我的规格是默认执行还是错误的规格执行,即“ read_start“规范被执行 客户端 : var readWriteTokenData = {}; readWriteTokenData ["_start"] = "read_write_start"; $firebaseArray(QueueRef.child('tasks')).$add(readWriteTokenData); 服务器端 : var queueRef = new Firebase('https://<INSTANCE>.firebaseio.com/queue'); var specs: { "read_write_token": { "_start_state" : "read_write_start", "in_progress_state": "read_write_in_progress", "finished_state": "read_write_finished", "error_state": "read_write_error" }, "read_token": { "_start_state" : "read_start", "in_progress_state": "read_in_progress", "finished_state": "read_finished", "error_state": "read_error" } } queueRef.child('specs').update(specs); var option1 = { 'specId' : […]

如何在Firebase中安排通知和数据库修改?

我正在开发一个使用Firebase和Swift的iOS应用程序。 我有两个数据库节点,一个包含活动logging,另一个包含非活动logging。 我想安排一个任务,使得每天早上10点,来自非活动logging节点的logging被传送到活动logging节点,并向我的所有应用程序用户发送关于该节点的推送通知。 我怎样才能做到这一点? 谢谢。

节点工作人员崩溃与“火警警告”

我有一个在节点上运行的firebase-worker( https://github.com/firebase/firebase-queue )。 我有一个工作需要做的特定任务的大量积压,但通常任务失败,然后工作人员停止以下错误消息: Oct 13 20:34:57 Worker app/low_priority_worker.1: FIREBASE WARNING: transaction at /low_priority_queue/tasks/-KTupoITHgT10u5uasQq failed: disconnect Oct 13 20:34:57 Worker app/low_priority_worker.1: FIREBASE WARNING: transaction at /user_dashboard/-JmteP57yEdeDFzAyv-p/1476403200000/views/-KTuI5464YGfBx9KEmNs failed: disconnect 工作人员正在执行的任务是在Firebasepath上增加一个值: # Increment comment amount on listing incrementDashboardListingTypeAmountPromise = BaseHelper.firebaseDatabase.ref("user_dashboard").child(@data.seller_id).child("#{Date.create().setUTC(true).beginningOfDay().format("{x}")}").child(@data.type).child(@data.listing_id).transaction (currentValue) -> (currentValue || 0) + 1 # Promise callback Promise.all([incrementDashboardListingTypeAmountPromise].compact()).then (results) => # Execute callback callback() […]

对高度请求的队列进行Firebase优化

基于firebase的游戏,其中每个用户在同一个waitingList上推送一个请求,以便一个nodeJS服务器为每两个等待的玩家分别准备一个循环游戏。 我在nodeJS上使用Firebase JS v3: var ref = firebase.database().ref(); //this is where we populate rounds var gamesRef = ref.child('games'); //users path var usersRef = ref.child('users'); //waiting queue var waitingRef = ref.child('waitingList'); //listen for each new queued user waitingRef.on('child_added', function(snap){ waitingRef.transaction(function(waitingList){ if(waitingList !== null){ var keys = Object.keys(waitingList); //take two players if(keys.length >= 2){ //prepare a new […]

Firebase并发读取/写入

我有一个为许多用户提供服务的Firebase移动应用程序。 该应用程序需要发送电子邮件通知给用户。 Firebase无法发送有效的电子邮件。 Zapier不是一个选项,因为webhook服务非常有限,不能使用复杂的JSON,比如电子邮件正文。 为了解决这个问题,我将“电子邮件作业”存储在Firebase数据库中(包括To,主题和正文),我使用nodejs服务器(在家中)监听Firebase数据库设置“邮件服务器”,所以只要有一个“新的电子邮件作业”它发送邮件并将作业状态标记为“完成”。 为了保持高可用性和可伸缩性,我必须能够运行多个“邮件服务器”,但是这将导致复制邮件,因为所有的服务器都会监听作业。 我无法将工作交给特定的服务器,因为服务器可能closures,我将失去工作。 此外,由于SQL数据库必须保持并发性,因此Firebase不具备SELECT FOR UPDATEtypes。 有没有办法使用Firebase解决这个问题? 如果没有,任何解决方法?

使用Firebase FCM和Google App Engine发送通知

我遵循这个教程在Android设备之间发送通知。 我首次使用Google Cloud App Engine来运行Node进程,并且工作正常。 我收到通知,但每个请求都会收到两个通知,而不是每个通知一个。 有人能帮我找出原因吗? 一些观察 在App Engine仪表板上,我注意到有两个实例。 我试图删除一个,但不会被删除。 我确认问题不在firebase数据库中。 创buildnotificationRequest时,只会按预期创build一个节点。 但是两个通知可能通过节点脚本发送到设备。 这是我的节点脚本。 我通过在terminal上执行gcloud app deploy部署了这个脚本。 // [START app] 'use strict'; const express = require('express'); const app = express(); var firebase = require('firebase-admin'); var request = require('request'); // Your Firebase Cloud Messaging Server API key var API_KEY = [my_api_key]; // Fetch the service […]