Articles of function

Firebase的云端函数在Algolia中为Firebase数据库对象build立索引

我通过文档,github仓库,但没有为我工作呢。 我的数据结构: App { posts : { <post_keys> : { auth_name : "name", text : "some text" //and many other fields } } } 1) Github存储库 :如果我使用这个,我只从一个函数获得一个字段,如果我需要所有的字段,我将需要为每个函数编写单独的函数,这是一个坏的方法。 2) Algolia Node.js的官方文档 :这不能作为一个云function部署,但它做我打算做的。 我如何编写一个可以在Firebase上部署的函数,并获取在Algolia中使用其密钥索引的整个对象?

云function“event =>”文档

我对云function很陌生,我认为它们很酷。 我已经search了可以由“event”调用的方法的完整列表以及如何使用它们的文档,但是我没有find任何方法。 在下面的代码事件的例子是用来调用data.current.child等。有人可以帮助我find“事件”下方法的文档。 exports.getPath = functions.database.ref('/Transaction/{id}') .onWrite(event => { // Grab the current value of what was written to the Realtime Database. const trans = event.data.current.child('Request').val();

如何使用简单的HttpGET-CRUD-NodeJS例子?

鉴于我只是使用生成的默认模板: module.exports = function (context, req, intable) { context.log("Retrieved records:", intable); context.res = { status: 200, body: intable }; context.done(); }; 和下面的json文件: { "bindings": [ { "type": "httpTrigger", "direction": "in", "name": "req", "methods": [ "get" ], "authLevel": "function" }, { "type": "http", "direction": "out", "name": "res" }, { "type": "table", "name": "inTable", "tableName": "person", "connection": […]

我是否需要在每个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: […]

在NodeJS,JXcore等下可能运行的代码如何检测它是否在支持本机ES6承诺的环境中运行?

例如,我有当前版本的官方Joyent NodeJS,当然还有Google V8 JavaScript引擎,还有带有Mozilla SpiderMonkey JavaScript引擎的JXcore。 前者似乎来源于原生的诺言支持,后者似乎不是。 (当然,这些并不是nodeJS代码可能运行的唯一两种可能的环境。 我的代码如何testing它的环境以查看它是否可以使用本机Promise? 在这种情况下,如果它检测到一个合适的polyfill是“本地的”就可以了。 但是它不应该检测出像Q这样的本地承诺。 (或者让我知道,如果我错了这个。)

如何了解Firebase云端function中的新数据?

您如何知道数据是否未更改以及Firebase Cloudfunction中的新增function? 我已经尝试了几个不同的选项来标记,如果数据刚刚更改,那么我不会发送推送通知。 另外我试图从快照获取_newData和_data子节点来比较数字,如果__newData更大,那么这是一个新的logging,但它没有工作。 请告诉我如何做到这一点。 示例代码片段。 module.exports = functions.database.ref('/userListEvents/{userID}') .onWrite(event => { const snapshot = event.data; if (event.data.val() && !event.data.previous.val()) { console.log('send push notification'); } else if (snapshot._data) { console.log('send push notification'); } else { return console.log('data was removed'); }; } 参考 functions.database.ref('/cards/{cardID}/interestedUsers') .onWrite(event => { 更新:这个选项对我不起作用,因为如果我这样做,例如functions.database.ref ('/ userListEvents / {userID} / {eventID}') ,那么报告错误是该字段不能为空。 我尝试了,但没有得到好的结果。 […]

想要将variables传递给节点asynchronous的映射方法

我使用节点asynchronous,我想传递一个variables的方法,它使用的第二个参数…例如: async.map(submissions, addScore, function(err, submissions) { if (submissions) { return submissions; } }); 我想通过userId与addScore但不知道如何做到这一点。 addScore是我每次提交时调用的方法,它需要一个userId 。

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请求正在被跳过。 […]

队列模式的函数式编程方法

处理asynchronous操作的队列是否可以在函数式编程的原则下实现? 这基本上是一个AsyncQueue。 var list = []; var inProgress = false; function Queue() {} Queue.prototype.enqueue = function(data) { list.push(data); if(!inProgress) { inProgress = true; start(list.shift()); } } function start(data) { // initiate some async activity, and call dequeue on completion } function dequeue() { if(list.length) { start(list.shift()); } else { isProgress = false; } } 很明显,有一种状态得到pipe理,无论是与list和inProgress […]