Tag: firebase

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

我是否需要在每个Cloud Function模块文件的顶部调用admin.initializeApp?

我的firebase的云端函数index.js已经达到我想开始将代码文件拆分成多个模块文件的大小。 不过,是否需要在每个将访问Firebase数据库的模块/文件的顶部调用这一行尚不清楚。 admin.initializeApp(functions.config().firebase); 请原谅,如果这真的很明显。 我不是一个有经验的Node.js用户。

如何使用云端function发送Firebase数据

我克隆了这个示例minimal-webhook,并得到这个工作。 我想通过发送写入松弛来扩展此function。 我正在使用slack的传入webhook。 我想这个问题是如何在nodejs中添加数据有效载荷的方式。 谁能帮忙? 提前致谢。 附加我的代码和错误日志从firebase。 const functions = require('firebase-functions'); const request = require('request-promise'); const WEBHOOK_URL = 'https://hooks.slack.com/services/abc' var headers = { 'Content-type': 'application/json' }; exports.webhook = functions.database.ref('/hooks/{hookId}').onWrite(event => { return request({ uri: WEBHOOK_URL, method: 'POST', headers: headers, body: event.data.toJSON, resolveWithFullResponse: true }).then(response => { if (response.statusCode >= 400) { throw new Error(`HTTP Error: […]

Firebase的Cloud Functions中将对象从一个节点复制到另一个节点

我正在使用Firebase的云端函数,而且我似乎是一个非常基本的操作。 如果有人添加post,他会写入/posts/ 。 我想要使​​用与初始文章中使用的相同的密钥将该post的一部分保存在不同的节点(称为public-posts或private-postspost)下。 我的代码看起来像这样 const functions = require('firebase-functions'); exports.copyPost = functions.database .ref('/posts/{pushId}') .onWrite(event => { const post = event.data.val(); const smallPost = (({ name, descr }) => ({ name, descr }))(post); if (post.isPublic) { return functions.database.ref('/public-posts/' + event.params.pushId) .set(smallPost); } else { return functions.database.ref('/private-posts/' + event.params.pushId) .set(smallPost); } }) 我得到的错误信息是: functions.database.ref(…).set不是一个函数 。 我究竟做错了什么?

无钥匙获取第一个firebase小孩

我正在尝试获取Firebase对象的第一个孩子。 我的裁判看起来像这样: var sitesToVisitRef = firebase.database().ref('sitesToVisit') 我知道裁判工作,因为我可以写信给它。 我的数据结构可以像这样: sitesToVisit: arstechnica-com: url: "https://arstechnica.com" 但是,我不知道的关键(arstechnica-com),但我需要得到的url。 我正在试着用这个代码: var nextUrl; sitesToVisitRef.limitToFirst(1).once('value', function(snapshot) { console.log("snapshot key" + snapshot.key); console.log("snapshot.val.url = " + snapshot.val().url); console.log("snapshot.val" + snapshot.val()); nextUrl = snapshot.val().url; } }); 但是snapshot.keylogging为“sitesToVisit”,而不是“arstechnica-com”。 任何帮助将不胜感激。 非常感谢!

firebase是否为每个admin.auth()。verifyIdToken(idToken)发出networking请求?

我有一个Firebase客户端(浏览器)。 我也有一个后端服务器,我确定用户使用firebase令牌login。 使用以下Firebase文档使用Firebase Admin SDKvalidationID令牌 ,我成功使用admin.auth().verifyIdToken(idToken)来validation我的节点服务器上的令牌。 然而,有一件事关注我。 我知道firebase使用证书来validation令牌。 这是否意味着每次我调用admin.auth().verifyIdToken(idToken)一个传出networking请求/networking事务是从我的节点服务器? 我很担心,因为如果是这样,我会考虑这个昂贵的。 我试图使用tcpdump,但交通是很多,并要神秘地告诉。

知道在Firebase列表中添加了哪些新用户,即使在重新启动后也是如此

如文档中所引用的,我将用户保存在列表中。 用户可以使用密码和Facebook提供者login。 (其他提供者可能晚点) 然后,我有一个nodejs应用程序,侦听用户列表,并在发生新项目时向我发送电子邮件。 使用firebase很容易,只需添加一个child_added事件侦听器。 但是,由于我的应用程序可能会重新启动更新/崩溃或任何其他原因,我不想每次重新启动应用程序时与每个用户的电子邮件。 所以我只保存用于发送电子邮件的最新userId。 var retrieveLatestAccountNotified = function () { ref.child("server-state").child("email-account").once("value", function (snapshot) { user = snapshot.val(); console.log("Latest User Id : " + user); fetchUser(user); //fakeUser(""); }, function (errorObject) { console.log("The read failed: " + errorObject.code); }); }; var fetchUser = function (latestUserId) { ref.child("users").orderByKey().startAt(latestUserId).on("child_added", function (snapshot, prevChildKey) { if (snapshot.key() !== […]

如何在具有nodejs的firebase队列中使用SpecId推送任务?

在文档的例子中我们可以看到: var Queue = require('firebase-queue'), Firebase = require('firebase'); var ref = new Firebase('https://<your-firebase>.firebaseio.com'); var queueRef = ref.child('queue'); var messagesRef = ref.child('messages'); var options = { 'specId': 'new_user' }; new Queue(queueRef, options, function(data, progress, resolve, reject) { // sanitize input message console.log(data.message); // pass sanitized message and username along to be fanned out resolve(data); }); 如何使用specId […]

迁移到新控制台后,Firebase部署被破坏 – “错误:需要身份validation”。

将我的应用迁移到新的Firebase控制台(console.firebase.google.com)后,我无法再使用Firebase CLI“firebase deploy”部署静态资产。 我收到消息“错误:需要身份validation”。 起初,我已经更新到最新的CLI,但发现我无法使用它在我的Angular应用程序中更新Firebase的情况下进行部署; 我还没有准备好,直到AngularFire被更新。 所以我降级到旧的CLI,但发现我仍然无法部署。 我试着卸载/重新安装Firebase CLI,Firebase,NodeJS(v4&6),多次login和注销Firebase–没有任何帮助。 我目前正在使用: Firebase CLI:2.15.1 节点:4.4.4 NPM:2.15.1 我也尝试使用“firebase prefs:token”,复制令牌,并通过“firebase deploy –token”使用令牌进行部署。 仍然没有运气。 需要validation。 希望在这个问题上取消阻止部署的一些指导。 谢谢!

Firebase orderByChild意外的结果

我有以下的单一儿童数据结构,并希望按子女财产rating检索订单: 样本数据结构 players: { 360368: { name: "Joe, Blogs", rating: 1853 }, 400017: { name: "Bob, Dylan", rating: 2597, }, 430013: { name: "James, Dean", rating: 2152, } } 检索代码 let ref = this.fb.ref('players'); ref.orderByChild("rating").limitToFirst(100).once("value", function(snapshot) { console.log(snapshot.val()); }); 返回的结果似乎没有逻辑数字顺序。 最后,当我运行下面的查询时,我得到了我期望的结果(看到10名玩家的评分为2597): let ref = this.fb.ref('players'); ref.orderByChild("rating").equal(2597).limitToFirst(10).once("value", function(snapshot) { console.log(snapshot.val()); }); UPDATE 看来数据正在被对象键返回。 我怎样才能确保这是返回,按ratingsorting?