Firestore(4.10.1):无法访问Firestore后端。云功能中的Firestore访问问题

时间:2018-04-05 21:45:49

标签: firebase vue.js google-cloud-firestore google-cloud-functions

快速提问。长话短说,我在谷歌云功能日志中收到此错误:

Firestore(4.10.1):无法访问Firestore后端。

这是我的函数文件中的代码:

 // pull in firebase
    const firebase = require('firebase');
    // required
    require("firebase/firestore");
    // initialize firebase
    const firebaseApp = firebase.initializeApp({
      // Firebase configuration.
        apiKey: "<Key Here>",
        authDomain: "<Auth Domain>",
        databaseURL: "<database url>",
        projectId: "<project id>",
        storageBucket: "<storage bucket>",
        messagingSenderId: "<messaging sender id>"
    });

    // setup the firestore
    var fs = firebaseApp.firestore();

exports.search = functions.https.onRequest((request, response) => {
  cors(request, response, () => {

    // set a reference to the foo table in firestore
          var docRef = fs.collection("foo");
          // check for the foo in the firestore
           docRef.where('bar', '==', <something>).get().then(function(doc) {
            if (!doc.docs) {
                return db.collection("foo").add({
                  bar: <something>
              })
              .then(function(docRef) {
                  console.log("Document written with ID: ", docRef.id);
              })
              .catch(function(error) {
                  console.error("Error adding document: ", error);
              });
            }
          });
     });
 });

此时我被困住了。据我所知,我有事情,但也许没有?我搜索了文档并搜索了这个问题,没有取得多大成功。你看错了吗?

2 个答案:

答案 0 :(得分:2)

好的。所以我的问题的答案是我不是很聪明。非常感谢Taha Azzabi指出我正确的方向。事实证明我的问题在这里:

docRef.where('bar', '==', <something>).get().then(function(doc) {
            if (!doc.docs) {
                return db.collection("foo").add({
                  bar: <something>
              })

这永远不会奏效。我的查询是正确的,但对doc.docs的检查不正确。我的代码现在是:

// setup the firestore
      const fs = firebase.firestore();
      // set a reference to the document for the searched summoner
      var docRef = fs.collection("bars").doc("snickers");
      // check for the bar in the firestore
      return docRef.get()
      .then(function(doc) {
       if (!doc.docs) {
        return fs.collection("bars").doc("snickers").set({
          name: "snickers"
        })
        .then(function(reference) {
          console.log("Document written");
          return response.status(200).send('');
        })

这就是我所寻找的,所以我很高兴。长话短说,我抓住了一系列结果然后试图查看是否存在单个结果。我需要做的是从firestore中获取一个doc,然后检查是否存在单个doc。但是,错误:

Firestore(4.10.1):无法访问Firestore后端。

我没有把我指向那个方向。

答案 1 :(得分:0)

您安装了Firebase CLI吗?

 npm install -g firebase-tools

您是否通过CLI登录Firebase控制台?

firebase login

您是否初始化了Firebase云功能?

firebase init functions

您不需要重新初始化应用,初始化管理应用实例,思考。 这是一个希望有帮助的例子

const functions = require('firebase-functions')
const admin = require('firebase-admin')
admin.initializeApp(functions.config().firebase)
//trigger a function to fire when new user document created
exports.createUser = functions.firestore
    .document('users/{userId}')
    .onCreate(event => {
        // perform desired operations ...
    });

部署你的职能

firebase deploy --only functions

在此处阅读更多内容https://firebase.google.com/docs/functions/get-started