Yer*_*spo 8 reference node.js firebase firebase-realtime-database
我在https://firebase.google.com/docs/database/server/retrieve-data#section-start中按照服务器配置的所有步骤操作 ,但是当我尝试在浏览器中创建引用时告诉我该应用程序被叫[默认]已经存在.那时如果preiono F5然后告诉我有"databaseUrl",我必须确保在启动应用程序firebase时提供该数据.
var express = require('express');
var router = express.Router();
var firebase = require('firebase');
/* GET home page. */
router.get('/', function(req, res, next) {
firebase.initializeApp({
serviceAccount: "aaaabbbbcccc.json",
databaseUrl: "https://xxxxxyyyyyzzzzz.firebaseio.com/" // <<<<--- it can not find
});
var db = firebase.database(); // <<<<---- Here is a problem
var ref = db.ref('vistas/principal');
ref.once('value', function(data){
res.render('index', { title: 'Express' });
});
});
module.exports = router;
Run Code Online (Sandbox Code Playgroud)
我创建了其他授权,其他密钥等.但没有任何作用.谢谢.
节点-v = v4.2.6 Firebase v3.x
FIREBASE FATAL ERROR: Can't determine Firebase Database URL. Be sure to include databaseURL option when calling firebase.intializeApp().
Error: FIREBASE FATAL ERROR: Can't determine Firebase Database URL. Be sure to include databaseURL option when calling firebase.intializeApp().
at Error (native)
at ad (c:\TsPrj\_pruebas\vistas-realtime-desde-firebase\node_modules\firebase\database-node.js:37:278)
at Object.firebase.INTERNAL.registerService.Reference [as database] (c:\TsPrj\_pruebas\vistas-realtime-desde-firebase\node_modules\firebase\database-node.js:238:113)
at O.u (c:\TsPrj\_pruebas\vistas-realtime-desde-firebase\node_modules\firebase\app-node.js:16:94)
at Object.d [as database] (c:\TsPrj\_pruebas\vistas-realtime-desde-firebase\node_modules\firebase\app-node.js:18:182)
at c:\TsPrj\_pruebas\vistas-realtime-desde-firebase\routes\index.js:14:21
at Layer.handle [as handle_request] (c:\TsPrj\_pruebas\vistas-realtime-desde-firebase\node_modules\express\lib\router\layer.js:95:5)
at next (c:\TsPrj\_pruebas\vistas-realtime-desde-firebase\node_modules\express\lib\router\route.js:131:13)
at Route.dispatch (c:\TsPrj\_pruebas\vistas-realtime-desde-firebase\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (c:\TsPrj\_pruebas\vistas-realtime-desde-firebase\node_modules\express\lib\router\layer.js:95:5)
Run Code Online (Sandbox Code Playgroud)
您可以检查应用程序是否已加载,因为它应该加载一次.一种方法是:
if (!firebase.apps.length) {
firebase.initializeApp({});
}
Run Code Online (Sandbox Code Playgroud)
这是我在升级到新版 Firebase 时也遇到的问题。您可能想要初始化两个单独的 firebase 应用程序,但我只想在我的应用程序的两个不同位置使用 refs,但我遇到了相同的错误。
针对这种情况,您需要做的是为您的应用程序创建一个仅初始化 firebase 一次的 firebase 模块,然后在应用程序的其他地方导入或要求它。
您应该从 firebase 控制台复制整个配置对象,并将其与 API 密钥和所有内容粘贴到此处。
这是我制作模块的方式示例:modules/firebase.js
import firebase from 'firebase';
var firebaseConfig = {
apiKey: "some-api-key",
authDomain: "some-app.firebaseapp.com",
databaseURL: "https://some-app.firebaseio.com",
storageBucket: "some-app.appspot.com",
};
var FbApp = firebase.initializeApp(firebaseConfig);
module.exports = FbApp.database(); //this doesnt have to be database only
Run Code Online (Sandbox Code Playgroud)
然后在您的应用程序的其他地方,您只需:
import Firebase from '/your/module/location'
var messagesRef = Firebase.ref("messages/");
Run Code Online (Sandbox Code Playgroud)
或者
var Firebase = require('/your/module/location');
var messagesRef = Firebase.ref("messages/");
Run Code Online (Sandbox Code Playgroud)
你应该在每个应用程序的 router.get 之外只执行一次 firebase.initializeApp 顺便说一句,你的导出看起来很奇怪/错误......如果它是一个模块,为什么你直接调用 router.get ?一旦您需要您的模块,它就会被执行。为什么要出口路由器?
| 归档时间: |
|
| 查看次数: |
8166 次 |
| 最近记录: |