我有一个风帆和节点应用程序,我正在使用 firebase 在该应用程序上推送通知 我一直遇到的问题是
The default Firebase app does not exist. Make sure you call initializeApp() before using any of the Firebase services
我在 app.js 文件中的代码
sails = require('sails');
rc = require('sails/accessible/rc');
const admin = require('firebase-admin');
const serviceAccount = require('./serviceAccountKey.json');
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "my url"
});
// Start server
sails.lift(rc('sails'));
我已经通过使用 setTimeOut 来延迟调用特定的 require 文件,为依赖于该服务的文件尝试了一些解决方案,这实际上在某些情况下对我有帮助,但我想要一个解决方案,这样我就不必做这项工作周围
答案 0 :(得分:0)
为了初始化您的 firebase 管理员,我更喜欢将它添加到 config/bootstrap.js
文件作为全局变量(没有 const 或 var),这样您就可以在整个应用程序中访问它
注意一旦应用程序启动,sails 就会运行引导程序文件,因此您可以在每次启动项目时编写任何想要运行的代码
示例
admin = require('firebase-admin');
serviceAccount = require('./serviceAccountKey.json');
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "my url"
});
您还可以定义 firestore、auth、bucket 等,
auth = admin.auth();
bucket = admin.storage().bucket();
db = admin.firestore();
db.settings({ timestampsInSnapshots: true });
现在在您的任何控制器中,您都可以使用 firestore
await db.collection('user').doc('userId').set({})