首页 > 解决方案 > 在 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文件中执行,这意味着即使我导入了我的配置文件并且我没有得到 returnfalsetrue. 我认为我的配置文件有错误(如果有的话)。在另一个服务文件中,我通过 初始化应用程序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"
});

任何帮助,将不胜感激!我觉得我忽略了一些东西,但我不知道它到底是什么。

标签: node.jsfirebaserestexpressfirebase-realtime-database

解决方案


您需要等待 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)
            }
        
        });
}

推荐阅读