Articles of firebase database

将巨大的Firebase数据库更新为交易

我正在使用Firebase数据库为iOS应用程序和维护巨大的数据库。 对于一些事件,我使用云function来同时更新几个兄弟节点作为事务。 但是,一些节点包含巨大的子节点(可能是一百万)。 在云function方面是否扩大了大量logging?

Firebase的云端function – 移除最老的孩子

我有一个onWrite云function设置为侦听当用户更新的东西。 我想删除最大的孩子,如果有超过3,这是我在: exports.removeOld = functions.database.ref('/users/{uid}/media').onWrite(event => { const uid = event.params.uid if(event.data.numChildren() > 3) { //Remove Oldest child… } }) 每个孩子都有一个"timestamp"键。 { "users" : { "jKAWX7v9dSOsJtatyHHXPQ3MO193" : { "media" : { "-Kq2_NvqCXCg_ogVRvA" : { "date" : 1.501151203274347E9, "title" : "Something…" }, "-Kq2_V3t_kws3vlAt6B" : { "date" : 1.501151232526373E9, "title" : "Hello World.." } "-Kq2_V3t_kws3B6B" : { […]

Firebase RangeError:检索数据时string的长度无效

我正在使用Firebase /数据库Node.js / Admin。 我试图找回超过100K的孩子(并在客户端工作)。 我得到了以下错误(加载很长时间后): /node_modules/firebase-admin/lib/database/database.js:161 function Sf(a,b){a.frames.push(b);if(a.frames.length==a.De){var c=a.frames.join("");a.frames=null;c=eb(c);a.Xf(c)}}h.send=function(a){Rf(this);a=A(a);this.ob+=a.length;Gf(this.Ua,"bytes_sent",a.length);a=pc(a,16384);1<a.length&&Tf(this,String(a.length));for(var b=0;b<a.length;b++)Tf(this,a[b])};h.Qc=function(){this.yb=!0;this.wc&&(clearInterval(this.wc),this.wc=null);this.Ha&&(this.Ha.close(),this.Ha=null)}; RangeError: Invalid string length at Array.join (native) at Sf (/node_modules/firebase-admin/lib/database/database.js:161:76) at Client.Ha.onmessage (/node_modules/firebase-admin/lib/database/database.js:159:289) 我用下面的代码与Node.js运行此: var databaseRef = defaultApp.database().ref('a_root_node'); var usersRef = databaseRef.child('users') usersRef.once('value').then(snapshot => { res.status(200).send(snapshot.val()) }) 我也尝试将其作为Firebasefunction运行,并增加了内存限制,但错误是一样的。

试图访问实时数据库时,Firebase Node.jspipe理SDK超时

使用带有Firebase函数的Node.js admin SDK每当我尝试访问实时数据库时,都会收到一个超时值。 只有在本地testing函数( firebase serve –only functions,hosting仅适用firebase serve –only functions,hosting )以及使用functions.config().firebase firebase serve –only functions,hosting初始化默认应用程序时才会发生这种情况。 这是一个刚刚发生在几天前的新行为。 但是,如果我尝试使用serviceAccount.json文件初始化默认应用程序,则一切正常。 我正在使用firebase-admin版本4.2.1和firebase firebase-functions版本0.5.9 。 我写了一个简单的http triggered函数,由于超时而失败: const functions = require('firebase-functions'); const admin = require('firebase-admin'); admin.initializeApp(functions.config().firebase); const db = admin.database(); exports.testDbConnection = functions.https.onRequest((req, res) => { return admin.database().ref().once('value') .then(function(snapshot) { res.json(snapshot); }).catch(function(error) { res.json(error); }); });

Firebasepipe理员SDK – DELETE响应不正确

我是新来的JavaScript(但不是新的编程)。 我正在使用NodeJs中的Firebase ADMIN SDK创build一个REST API。 如果资源存在,我能够成功执行DELETE请求。 但如果不存在(或者ID不正确),POSTMAN的响应仍然是成功的。 我想这个callback函数是不正确的。 当我实现GET /:id和PUT /:id时,我可能会看到相同的问题。 请帮忙。 // DELETE /api/billingPlans/:id // Delete a billing plan routes.delete('/:id', (req, res) => { var ref = admin.database().ref(firebaseNode); //Have also tried snapshot.exists() but similar problem occurs return ref.child(req.params.id).once('value', function(snapshot) { snapshot.ref.remove(function(error){ if(!error) res.status(200).json({"result" : "DELETE Success"}); else res.status(204).json({"error" : "Not found"}); }); });

Firebase函数通知

我正尝试使用FCM服务发送简单的推送通知。 每当我的function被呼叫,我想收到一个通知,我希望我的手机振铃和振动。 我有两个问题: 当我收到通知时,我得到5个,而不是一个。 第二个问题是,如果我收到通知时手机的声音被激活,手机不会振动或振铃,但如果处于振动模式,则会在收到通知时振动。 任何想法如何解决这个问题? 谢谢! 'use strict' const functions = require('firebase-functions'); const admin = require('firebase-admin'); admin.initializeApp(functions.config().firebase); exports.sendNotification = functions.database.ref('/Alerts/{email_encoded}/{alert_id}').onWrite(event => { const email_encoded = event.params.email_encoded; const alert_id = event.params.alert_id; const deviceToken = admin.database().ref(`/Users/${email_encoded}/device_token`).once('value'); deviceToken.then(result => { const token_id = result.val(); const payload = { notification: { title: "Alert", body: "alert triggered", icon: "default", […]

firebasefunction来触发通知

我想创build一个firebase函数,当表中有新的条目时会触发一个通知。 我有包含所有设备令牌的单独的表。 无法弄清楚如何从表中获取每个设备令牌。 这里是我迄今为止写的一些firebase函数的代码片段,但没有运气。 'use strict'; const functions = require('firebase-functions'); const admin = require('firebase-admin'); admin.initializeApp(functions.config().firebase); exports.sendNotificationToAllMembers = functions.database.ref('/chatRoom/{messageNode}').onWrite(event => { const messageInfo = event.params.messageNode; // Get the list of device notification tokens. const getDeviceTokensPromise = admin.database().ref(`/deviceTokens`).once('value'); // Get newly added Message detail const getMovieMessageDetail = admin.database().ref(`/chatRoom/${messageInfo}`).once('value'); return Promise.all([getDeviceTokensPromise, getMovieMessageDetail]).then(results => { const deviceTokensList = results[0]; […]

Firebase函数HTTP触发器 – 错误:无法处理请求 – Firebase未定义

提前道歉,如果我的语法不正确,因为我是Firebase的新手(和node.js)。 使用HTTP触发器,我试图从我的实时数据库中将“奖”数据作为对象。 但是,基于我的设置,当我执行从firebase deploy接收到的URL时,我收到以下错误。 错误:无法处理请求 我确实将firebase更改为admin ,但这并不能解决问题。 另外我还以为.catch()方法至less会让我理解问题是什么,而不是告诉我“错误”。 我希望最终的结果是: {"create_your_own":"false","first_time":"true","five_in_a_row":"true", "share_with_friend": "false"} 任何帮助破译我的问题,不胜感激。 function日志 实时数据库 fir-db-test-mike | |__awards | | | |__user01 | | | | | |__create_your_own: false | | |__first_time: true | | |__five_in_a_row: true | | |__share_with_friend: false | | | | | |__user02 | | | |__create_your_own: false | |__first_time: false […]

Firebase:使用云端function删除Cloud Starage中的文件

我尝试使用Cloud Functions从删除条目中的Cloud Storage删除与Realtime Database某些特定条目相关的所有文件。 我的function看起来像休闲: exports.onDeleteRequest = functions.database.ref('/requests/{requestid}/').onDelete(event => { const storage = functions.config().firebase.storageBucket; const userId = event.data.previous.child('uid').val(); const requestId = event.params.requestid; const path = storage + '/photos/' + userId + '/' + requestId; console.log('path: ', path); return gcs.bucket(path).delete().then(function() { console.log("Files removed"); }).catch(function(error) { console.error("Failed removing files", error); }); }); 但是,我继续在日志中出现以下错误: Failed removing files { […]

Firebase API,用于将树分支从集合移动到另一个集合

在我的应用程序中,我需要将一个相当大的集合分支移动到另一个集合。 目前,我正在使用类似的东西: srcRef .startAt(start) .endAt(end) .once('value', function(snap) { destRef.set(snap.exportVal()); }); 很明显,这是相当昂贵的,所以我的问题是:为什么Firebase不提供一个简单的API? 喜欢: srcRef.moveTo(destRef);