我编写了一个Firebase云函数,可以通过REST API访问该函数。代码如下所示。
我需要做的是,当用户通过“Web服务URL”从前端提交一些值时。
1)我需要将这些数据保存在Firebase实时数据库中。
2.)我参考了网上的几个教程,不明白var ref=db.ref(“服务器/保存数据/Fireblog”);
在下面的代码中做了什么。
const functions = require('firebase-functions');
const gcs = require('@google-cloud/storage')();
const os = require("os");
const path = require("path");
const cors = require("cors")({ origin: true });
var admin = require("firebase-admin");
var serviceAccount = require("./My-Service.json");
// Initialize the app with a service account, granting admin privileges
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://my-xx0xx.firebaseio.com/"
});
// As an admin, the app has access to read and write all data, regardless of Security Rules
var db = admin.database();
var ref = db.ref("server/saving-data/fireblog");
exports.uploadFile = functions.https.onRequest((req, res) => {
cors(req, res, () => {
var usersRef = ref.child("users");
usersRef.set({
alanisawesome: {
date_of_birth: "June 23, 1912",
full_name: "Alan Turing"
},
gracehop: {
date_of_birth: "December 9, 1906",
full_name: "Grace Hopper"
}
});
if (req.method !== 'POST') {
return res.status(500).json({
message: 'Not allowed'
});
}
res.status(200).json({
message: req.body
});
});
});
您的代码确实将数据写入数据库,位于server
节点(位置)下。数据库中的结果如下(从Firebase控制台导出):
"server" : {
"saving-data" : {
"fireblog" : {
"users" : {
"alanisawesome" : {
"date_of_birth" : "June 23, 1912",
"full_name" : "Alan Turing"
},
"gracehop" : {
"date_of_birth" : "December 9, 1906",
"full_name" : "Grace Hopper"
}
}
}
}
}
所以,基本上,问题1的答案是:“它被保存了”。
问题#2:值db.ref(服务器/保存数据/Fireblog)
是引用
的实例,它"表示数据库中的特定位置,可用于读取或写入数据到该数据库位置",请参阅https://firebase.google.com/docs/reference/js/firebase.database.Reference
var usersRef=ref.child("用户");
也是一个引用,您可以通过child()
方法获得,请参阅https://firebase.google.com/docs/reference/js/firebase.database.Reference#child
因此,当您执行usersRef时,通过组合初始引用和子方法。设置({})您写入以下路径:服务器/保存数据/fireblog/用户
。这就是上面数据库导出中反映的内容。
请注意,使用您当前的代码,您将始终在位置写入相同的数据,即以下对象:
{
alanisawesome: {
date_of_birth: "June 23, 1912",
full_name: "Alan Turing"
},
gracehop: {
date_of_birth: "December 9, 1906",
full_name: "Grace Hopper"
}
}
同样,这反映在上面的数据库导出中。
有了这样一个通过HTTPS调用的云函数,您可以在HTTP请求主体中获得想要写入数据库的数据。
最后一点:我将重新组织您的职能如下:
const db = admin.database();
const ref = db1.ref("server/saving-data/fireblog");
exports.uploadFile = functions.https.onRequest((req, res) => {
cors(req, res, () => {
const usersRef = ref.child("users");
if (req.method !== 'POST') {
return res.status(500).json({
message: 'Not allowed'
})
} else {
return usersRef.set({
alanisawesome: {
date_of_birth: "June 23, 1912",
full_name: "Alan Turing"
},
gracehop: {
date_of_birth: "December 9, 1906",
full_name: "Grace Hopper"
}
}).then(() => {
res.status(200).json({
message: req.body
});
}).catch(error => {
return res.status(500).send(error);
})
}
})
});
最后,我建议你看看以下来自Firebase团队的视频:https://www.youtube.com/watch?v=7IkUgCLr5oA
当我的数据库用“photo_url”字段更新时,我想下载图像并将其保存到存储区
Im使用firebase,由于某些原因,我的代码没有推送数据,并且Im没有在firebase URL中看到数据。我的密码是这样的 我得到警报“保存”,但我无法在firebase URL中找到数据。 此外,为Firebase中的每个url提供的API键有什么用途。 更新:这种情况发生在IE10中。在其他浏览器中,它工作得很好
我正在创建一个应用程序,它使用两步对象创建到firebase实时数据库。 我想要的是,在一个捕获onCreate事件的云函数上,如果一些规则不完整,那么create操作就会被停止。 有办法做到这一点吗?或者我需要移除节点而不是拒绝创建? 谢谢你!
如何获得下载URL? 我有点糊涂了。现在,我被困在修改后的功能更新。下面是我对管理的初始化。
这对我来说很神秘。我知道函数被正确调用是因为 > 我可以在云功能日志“Received query Roud and Cleary:”中看到我的打印内容。 当删除行并返回一些虚拟数据时,函数将正确执行。
我有一个关于在数据库中存储数据的问题。 我正在应用程序中的一些屏幕上工作:登录屏幕(用户可以访问你的帐户),注册屏幕(用户可以创建一个新帐户),用户提供信息的屏幕(比如“母亲的名字和身高”),以及配置文件屏幕(显示用户提供的信息)。 我在登录屏幕和注册屏幕中没有问题,但是我不知道如何在Firebase数据库中保存用户提供的信息,在用户提供信息的屏幕中。 你们谁能帮我一下吗?我知道我可以使用fire