我有一个 Firebase HTTPs 函数。该函数需要根据查询参数从 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('/');
但数据库引用没有方法once
,只有onWrite
( https://firebase.google.com/docs/reference/functions/functions.database.RefBuilder )。这显然是针对 DB 写入函数,而不是 HTTP 函数。
在 HTTP 函数中是否有正确的方法从数据库中读取一次?我可以使用普通的 Firebase SDK,还是有更好的方法?
谢谢。
最佳答案
我找到了结合此处有关如何获取参数的答案和 Michael Blight 的答案的解决方案 How to run query from inside of Cloud function?
那里的答案还显示了使用 firebase-admin 的要求。
调用 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>`
);
});
});
关于javascript - Firebase HTTP Cloud Functions - 一次读取数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43913139/