node.js - 在 Express.js 中获取 firebase 实时数据库参考时遇到问题
问题描述
我希望能够set()
在我的 Express.js API 中做一个简单的事情。我已按照此处的文档设置了一个配置文件夹,其中包含一个包含以下信息的配置文件:
//config_firebase
var firebase = require("firebase");
const config = {
apiKey: "credentials-go-here",
authDomain: "credentials-go-here",
databaseURL: "credentials-go-here",
projectId: "credentials-go-here",
storageBucket: "credentials-go-here",
messagingSenderId: "credentials-go-here",
appId: "credentials-go-here",
measurementId: "credentials-go-here"
};
module.exports = !firebase.apps.length ? firebase.initializeApp(config) : firebase.app();
在这个文件中,我尝试使用 Firebase 引用写入数据库:
//writeDataService
var app = require("../config/config_firebase");
const writeData = async (uid, userdata) => {
var dbRef2 = app.database()
dbRef2.ref("users/" + uid).child("data").set({
userdata
}, function(error){
if (error){
//if the write failed
return(false)
}
else {
//Data saved successfully
return(true)
}
});
}
module.exports = {
writeData
};
代码永远不会在writeDataService
文件中执行,这意味着即使我导入了我的配置文件并且我没有得到 returnfalse
或true
. 我认为我的配置文件有错误(如果有的话)。在另一个服务文件中,我通过 初始化应用程序admin
,下面是代码:
var admin = require("firebase-admin");
admin.initializeApp({
credential: admin.credential.cert({
projectId: "credentials-go-here",
clientEmail: "credentials-go-here",
privateKey: "credentials-go-here"
}),
databaseURL:"credentials-go-here"
});
任何帮助,将不胜感激!我觉得我忽略了一些东西,但我不知道它到底是什么。
解决方案
您需要等待 dbRef2 操作吗?
const writeData = async (uid, userdata) => {
var dbRef2 = app.database()
await dbRef2.ref("users/" + uid).child("data").set({
userdata
}, function(error){
if (error){
//if the write failed
return(false)
}
else {
//Data saved successfully
return(true)
}
});
}
推荐阅读
- java - 油漆转换 (JAVA NETBEANS)
- terraform - Azure DevOps Terraform - azurerm_policy_assignment 出错 - “无法解析修复范围 ID:ID 为空”
- windows - 从外部 PC 到 Hyper-V 来宾 VM 的 RDP
- python - 比较句子字符串的两个数据帧列并为第三帧创建新值
- html - Flexbox:所有列高度相同,文本居中
- ffmpeg - 展平 360 度鱼眼视频
- mysql - MySQL:向查询中添加列以汇总来自另一个表的顺序数据
- javascript - 如果您已经访问过页面,则分页不会获取数据
- python - 在 django 网站上使用 Matplotlib
- javascript - 追加不将项目添加到列表