最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

firestore数据库未与Firebase云功能连接

IT培训 admin 11浏览 0评论

firestore数据库未与Firebase云功能连接

我正在尝试通过Firebase云功能中使用的Express JS来检索Firestore数据库信息。我在function文件夹中的index.js文件看起来像:

 const functions = require('firebase-functions');
 const admin = require("firebase-admin");
 const db = admin.firestore();
 admin.initializeApp();
 const express = require('express');
 const app= express();

 app.get("/teacher/:uid",function(req,res){
    const id = req.params.uid;
    const doc = db.collection('users').doc(id).get();
    res.send(doc);
    //res.render("teacher",{id : id});
})

我的index.html文件的脚本部分看起来像:

<body>

// some html code 
<!---script follow-->
<script src=".4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
<script src="/[email protected]/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src=".4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
<script src=".14.2/firebase-app.js"></script>
<script src=".14.2/firebase-auth.js"></script>
<script src=".14.2/firebase-firestore.js"></script>
<script src=".14.2/firebase-functions.js"></script>
<script>
  // web app's Firebase configuration
  var firebaseConfig = {
    apiKey: "xyz",
    authDomain: "xyz",
    databaseURL: "xyz",
    projectId: "xyz",
    appId: "xyz"
  };
  // i have replaced the actual keys and urls with xyz

  firebase.initializeApp(firebaseConfig);
  const auth= firebase.auth();
  const db= firebase.firestore();
  const functions = firebase.functions();

</script>

<script src="auth.js"></script>
</body>
-------------------

错误:在命令firebase的服务-仅功能,我得到这个错误

错误:默认Firebase应用程序不存在。使用任何Firebase服务之前,请确保先调用initializeApp()。 在FirebaseAppError.FirebaseError [作为构造函数](/home/chahat/Desktop/firebase/functions/node_modules/firebase-admin/lib/utils/error.js:42:28) 在FirebaseAppError.PrefixedFirebaseError [作为构造函数](/home/chahat/Desktop/firebase/functions/node_modules/firebase-admin/lib/utils/error.js:88:28) 在新的FirebaseAppError(/home/chahat/Desktop/firebase/functions/node_modules/firebase-admin/lib/utils/error.js:123:28) 在FirebaseNamespaceInternals.app(/home/chahat/Desktop/firebase/functions/node_modules/firebase-admin/lib/firebase-namespace.js:101:19) 在FirebaseNamespace.app(/home/chahat/Desktop/firebase/functions/node_modules/firebase-admin/lib/firebase-namespace.js:452:30) 在FirebaseNamespace.ensureApp(/home/chahat/Desktop/firebase/functions/node_modules/firebase-admin/lib/firebase-namespace.js:468:24) 在Proxy.fn(/home/chahat/Desktop/firebase/functions/node_modules/firebase-admin/lib/firebase-namespace.js:327:30) 在对象。 (/home/chahat/Desktop/firebase/functions/index.js:3:18) 在Module._compile(内部/模块/cjs/loader.js:1156:30) 在Object.Module._extensions..js(内部/模块/cjs/loader.js:1176:10)⚠我们无法加载您的功能代码。 (请参见上文)

请帮助。

回答如下:

您应该在云功能代码中更改几个部分:

 const functions = require('firebase-functions');
 const admin = require("firebase-admin");
 admin.initializeApp();

 const db = admin.firestore();   //#1

 const express = require('express');
 const app= express();

 app.get("/teacher/:uid",function(req, res){
    const id = req.params.uid;
    db.collection('users').doc(id).get()   //#2  
    .then(snap => {
        res.send(snap.data());
    })
    .catch(error => {...})
 })
  1. 已将Admin SDK初始化后,将Firestore定义为admin.firestore() after
  2. get()方法是异步的。您需要等待Promise的返回解决之后,才能返回响应。文档中的更多详细信息:https://firebase.google/docs/firestore/query-data/get-data#get_a_document和https://firebase.google/docs/functions/video-series

firestore数据库未与Firebase云功能连接

我正在尝试通过Firebase云功能中使用的Express JS来检索Firestore数据库信息。我在function文件夹中的index.js文件看起来像:

 const functions = require('firebase-functions');
 const admin = require("firebase-admin");
 const db = admin.firestore();
 admin.initializeApp();
 const express = require('express');
 const app= express();

 app.get("/teacher/:uid",function(req,res){
    const id = req.params.uid;
    const doc = db.collection('users').doc(id).get();
    res.send(doc);
    //res.render("teacher",{id : id});
})

我的index.html文件的脚本部分看起来像:

<body>

// some html code 
<!---script follow-->
<script src=".4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
<script src="/[email protected]/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src=".4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
<script src=".14.2/firebase-app.js"></script>
<script src=".14.2/firebase-auth.js"></script>
<script src=".14.2/firebase-firestore.js"></script>
<script src=".14.2/firebase-functions.js"></script>
<script>
  // web app's Firebase configuration
  var firebaseConfig = {
    apiKey: "xyz",
    authDomain: "xyz",
    databaseURL: "xyz",
    projectId: "xyz",
    appId: "xyz"
  };
  // i have replaced the actual keys and urls with xyz

  firebase.initializeApp(firebaseConfig);
  const auth= firebase.auth();
  const db= firebase.firestore();
  const functions = firebase.functions();

</script>

<script src="auth.js"></script>
</body>
-------------------

错误:在命令firebase的服务-仅功能,我得到这个错误

错误:默认Firebase应用程序不存在。使用任何Firebase服务之前,请确保先调用initializeApp()。 在FirebaseAppError.FirebaseError [作为构造函数](/home/chahat/Desktop/firebase/functions/node_modules/firebase-admin/lib/utils/error.js:42:28) 在FirebaseAppError.PrefixedFirebaseError [作为构造函数](/home/chahat/Desktop/firebase/functions/node_modules/firebase-admin/lib/utils/error.js:88:28) 在新的FirebaseAppError(/home/chahat/Desktop/firebase/functions/node_modules/firebase-admin/lib/utils/error.js:123:28) 在FirebaseNamespaceInternals.app(/home/chahat/Desktop/firebase/functions/node_modules/firebase-admin/lib/firebase-namespace.js:101:19) 在FirebaseNamespace.app(/home/chahat/Desktop/firebase/functions/node_modules/firebase-admin/lib/firebase-namespace.js:452:30) 在FirebaseNamespace.ensureApp(/home/chahat/Desktop/firebase/functions/node_modules/firebase-admin/lib/firebase-namespace.js:468:24) 在Proxy.fn(/home/chahat/Desktop/firebase/functions/node_modules/firebase-admin/lib/firebase-namespace.js:327:30) 在对象。 (/home/chahat/Desktop/firebase/functions/index.js:3:18) 在Module._compile(内部/模块/cjs/loader.js:1156:30) 在Object.Module._extensions..js(内部/模块/cjs/loader.js:1176:10)⚠我们无法加载您的功能代码。 (请参见上文)

请帮助。

回答如下:

您应该在云功能代码中更改几个部分:

 const functions = require('firebase-functions');
 const admin = require("firebase-admin");
 admin.initializeApp();

 const db = admin.firestore();   //#1

 const express = require('express');
 const app= express();

 app.get("/teacher/:uid",function(req, res){
    const id = req.params.uid;
    db.collection('users').doc(id).get()   //#2  
    .then(snap => {
        res.send(snap.data());
    })
    .catch(error => {...})
 })
  1. 已将Admin SDK初始化后,将Firestore定义为admin.firestore() after
  2. get()方法是异步的。您需要等待Promise的返回解决之后,才能返回响应。文档中的更多详细信息:https://firebase.google/docs/firestore/query-data/get-data#get_a_document和https://firebase.google/docs/functions/video-series
发布评论

评论列表 (0)

  1. 暂无评论