firebase - 从 firebase 函数访问实时数据库
问题描述
我们正在为我们的移动应用程序使用 firebase 函数和 firebase 实时数据库。当有人下订单时,我们会发送电子邮件,该订单是使用如下 Firebase 数据库触发器实现的:
exports.on_order_received = functions.database.ref("/orders/{id}")
.onCreate((change, context) => {
console.log("start of on_order_received")
...
上面的触发器对我们来说很好用。现在,我们有一些要求,我们在图片中没有数据库触发器。这是一个如下的http请求
exports.daily_sales_report = functions.https.onRequest((req, res) => {
//query data from firebase
问题是我们如何在这里访问实时数据库对象?或者换句话说,我如何访问 /orders 节点?我试过如下
exports.daily_sales_report = functions.https.onRequest((req, res) => {
//query data from firebase
var ref = functions.database.ref('orders')
ref.orderByValue().limitToLast(3).on("value", function(snapshot) {
snapshot.forEach(function(data) {
console.log("The " + data.key + " dinosaur's score is " + data.val());
});
})
但这不起作用。我收到错误“orderByValue() 不是函数”
解决方案
您应该使用Firebase Admin SDK。它具有读取和写入数据库的能力。事实上,当您编写数据库触发器时,它为您提供的 refs 实际上来自 Admin SDK,因此它是相同的 API。使用 HTTP 类型函数时只需要自己初始化即可:
// at the top of the file:
const admin = require('firebase-admin');
admin.initializeApp();
// in your function:
const root = admin.database().ref();
// root is now a Reference to the root of your database.
推荐阅读
- node.js - 如何通过 AWS lambda nodejs 函数索引存储在 S3 中的 XML 文件?
- php - RSA:从 Python 中的 n 和 e 生成公钥,PHP 给我两个不同的公钥
- influxdb - 为什么任何用户都可以登录influxdb?
- python-3.x - Boto3:获取所有可用 S3 存储桶详细信息的详细信息
- angular - 添加 LazyLoad - 'mat-icon' 不是已知元素
- reactjs - 更新依赖于 React-Hooks 中其他计算状态的状态
- django - 使用 Docker Container - Django 构建后维护媒体文件
- automation - 有没有办法让测试让它的 TestCaseSource 从外部源(如 excel)读取数据?
- node.js - npm 开始显示 index.html 未定义,尽管 index.html 存在
- python - 如何从复杂的验证码中提取数字