database()不是node.js应用程序中的函数



我正在创建一个内部有firebase的discordbot。但它显示了这个错误。我包括了所有必要的东西,并初始化了配置,但仍然给出了这个错误

TypeError: firebase.database() is not a function

这就是我尝试过的

createReplay("hello", "hi")
var firebase = require("firebase/app");
require('firebase/database');
var firebaseConfig = {
apiKey: "AIzaSyBPKn****MaX081m3T0-6RFbDk",
authDomain: "linkify****baseapp.com",
projectId: "link****f9",
storageBucket: "link****9.appspot.com",
messagingSenderId: "606****0165",
appId: "1:606071650165:****652d31e39129e453c"
};
// Initialize Firebase
var app = firebase.initializeApp(firebaseConfig);
function createReplay(title, msg){
app.database().ref( server + '/links/' + title).set({ //'server' is already declared outside 
message: msg
});
}

Discord机器人在服务器上运行,该服务器是一个安全的环境,只有您和您授权的人才能访问。在这种情况下,最好使用Firebase Admin SDK,而不是您尝试使用的Javascript SDK。

Admin SDK,它可以完全访问您的Firebase项目的资源,并且不遵循任何安全规则。也就是说,您必须授权自己,即检查用户的Discord ID并仅返回用户的数据。

要安装Admin SDK,请使用npm(或yarn(:

npm install firebase-admin
# yarn add firebase-admin

要初始化Admin SDK,您需要一个服务帐户,您可以从Firebase项目设置中的服务帐户选项卡中获得一个JSON文件。复制以下代码以初始化您的管理SDK:

const admin = require("firebase-admin");
admin.initializeApp({
credential: admin.credential.cert("./serviceAccountKey.json"),
databaseURL: "https://<project-id>.firebaseio.com/"
})
const database = admin.database()
// Discord JS (or REST API) code . . .

NodeJS Admin SDK的语法与Javascript客户端SDK的语法相同,所以这应该不是问题。但以下是您使用Admin SDK的功能:

async function createReplay(title, msg){
return admin.database().ref( server + '/links/' + title).set({
message: msg
}).then(() => {
console.log("Replay Added")
return true
}).catch((e) => console.log(e));
}

最新更新