我有一个火基HTTP功能。该函数需要根据查询参数从 Firebase 数据库中读取值,并根据此数据返回结果。
Firebase JS SDK指出要做到这一点,请使用:
return firebase.database().ref('/users/' + userId).once('value').then(function(snapshot) {
var username = snapshot.val().username;
// ...
});
但是,云函数示例具有:
var functions = require('firebase-functions');
functions.database.ref('/');
但数据库引用没有一次
该方法,只有写入
(https://firebase.google.com/docs/reference/functions/functions.database.RefBuilder)。这显然是针对数据库写入函数,而不是 HTTP 函数。
在一个HTTP函数中从数据库读取一次有正确的方法吗?我可以用正常的Firebase SDK吗,或者有更好的方法吗?
谢了。
你混淆了两个部分:
由于您有一个HTTP函数,您应该触发,如HTTP函数的留档所示:
exports.data = functions.https.onRequest((req, res) => {
// ...
});
然后,在函数中,访问数据库,如Admin SDK的文档所示:
return admin.database().ref('/users/' + userId).once('value').then(function(snapshot) {
var username = snapshot.val().username;
// ...
});
所以总的来说:
exports.date = functions.https.onRequest((req, res) => {
admin.database().ref('/users/' + userId).once('value').then(function(snapshot) {
var username = snapshot.val().username;
res.status(200).send(username);
});
});
请注意,这是一个棘手的模式。对数据库的调用是异步进行的,可能需要一些时间才能完成。在等待过程中,HTTP函数可能会超时并被Google Cloud Functions系统终止。请参阅留档的这一部分。
作为一般规则,我建议使用Firebase数据库SDK或其REST API来访问数据库,而不是依赖HTTP函数作为中间件。
我找到了解决方案,将如何获取参数的答案与Michael Blight关于如何从云函数内部运行查询的答案结合起来?
那里的答案还显示了使用火库管理员所需的内容。
以下方法适用于我调用 my-project.firebaseapp.com/event/123/。
var functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.showEvent = functions.https.onRequest((req, res) => {
const params = req.url.split("/");
const eventId = params[2];
return admin.database().ref('events/' + eventId).once('value', (snapshot) => {
var event = snapshot.val();
res.send(`
<!doctype html>
<html>
<head>
<title>${event.name}</title>
</head>
<body>
<h1>Title ${event. name} in ${event.city}</h1>
</body>
</html>`
);
});
});
我正在尝试使用 azure 函数读取 azure blob 内容。 容器名称始终相同,Blob名称由触发该函数的队列消息传递。 当我运行此函数时,函数超时(超过5分钟)。 带有blob名称的队列消息是正确的并显示出来,blob只包含一个长json,大约是292kb。 我尝试在创建新blob时直接触发该函数,但它返回了一个带有流的对象,您知道任何方法使该流可读吗? 使用上面的代码,我可以正确获取bl
我正在尝试使用Firebase Cloud功能为iOS应用程序创建设备到设备推送通知。每当在数据库中的引用'/user-通知/{通知RecipientUid}/{挑战ID}'处创建新子节点时,我都想触发一个事件。这是我的index.js代码: 当在该位置的数据库中添加新的子数据库时,我收到此错误,“类型错误:函数.数据库.ref(...)。一次不是一个函数“,在 Firebase 控制台的函数日志
我正在开发一个物联网应用程序,需要从PubSub主题读取流数据。我想使用Google云数据流SDK读取这些数据。我正在使用Java 1.8 我正在使用谷歌云平台的试用版。当我使用PubSubIO时。Read方法读取流数据时,我在日志文件中发现错误,我的项目没有足够的CPU配额来运行应用程序。 所以我想使用谷歌云数据流SDK读取流数据。 请有人告诉我在哪里可以找到使用Google Cloud Dat
当我想从实时数据库更新CloudFireStore时,我部署了下面的代码,结果出错。 TypeError:无法读取导出时未定义的属性“ref”。改变现状。功能。数据库参考onUpdate。事件(/user\u code/index.js:18:20)在cloudfunctionnewsignation(/user\u code/node\u modules/firebase functions/l
当我尝试使用Firebase部署--Only函数命令部署到一个新的Firebase项目时,我收到了这个错误。我有两个正在使用的项目,一个开发人员和一个prod,我正在处理prod和部署现在也工作得很好,但是当我添加这个项目开发时,部署在prod中保持工作良好,但在这个新项目开发中没有。相反,我得到了这个错误: 错误:解析函数触发器时发生错误。 TypeError:无法读取Object上未定义的属性
TensorFlow程序读取数据一共有3种方法: 供给数据(Feeding): 在TensorFlow程序运行的每一步, 让Python代码来供给数据。 从文件读取数据: 在TensorFlow图的起始, 让一个输入管线从文件中读取数据。 预加载数据: 在TensorFlow图中定义常量或变量来保存所有数据(仅适用于数据量比较小的情况)。 目录 数据读取 供给数据(Feeding) 从文件读取数据