Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 谷歌云功能读取Firestore中的文档,并使用规则进行保护_Android_Node.js_Firebase_Google Cloud Firestore_Google Cloud Functions - Fatal编程技术网

Android 谷歌云功能读取Firestore中的文档,并使用规则进行保护

Android 谷歌云功能读取Firestore中的文档,并使用规则进行保护,android,node.js,firebase,google-cloud-firestore,google-cloud-functions,Android,Node.js,Firebase,Google Cloud Firestore,Google Cloud Functions,我是云功能的新手 我有一个Android应用程序,它通过callable client调用云函数,Cloud Functionnode.js/typescript调用Firestore读取数据 云功能代码: import * as functions from 'firebase-functions'; import * as admin from 'firebase-admin'; admin.initializeApp({credential : admin.credential.appl

我是云功能的新手

我有一个Android应用程序,它通过callable client调用云函数,Cloud Functionnode.js/typescript调用Firestore读取数据

云功能代码:

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';

admin.initializeApp({credential : admin.credential.applicationDefault()});
exports.queryForData = functions.https.onCall((dats, context) => {
admin.firestore().collection('mydocument').get()
        .then(snapshot => {
                snapshot.forEach( e => {
                    if(e.exists)
                    {
                    console.log("docs="+e.ref.path);
                    return {"data":e.data()};
                    }
                    else{
                        console.log("No docs!!!!!")
                        return {"data":"empty"}
                    }
                })

            })
        .catch(error => {
            console.log("error occurred"+error);
            return {error:error};
        });
    });
当我的Android应用程序调用此函数时,我收到一条错误消息catch block显示:error:无法加载默认凭据并要求检查Google Cloud Service Key set-up URL,我已设置环境变量Google_APPLICATION_CREDENTIALS以指向下载的JSON文件

我尝试过使用带有applicationDefault和functions.config.firebase的凭据,在没有参数的情况下初始化EAPP

我放置了控制台日志,以查看是否调用了该函数,是否收到了HTTP调用,是否调用了它。但问题似乎是当我试图收集时

Firestore规则允许经过身份验证的用户读取文档

我已经看过了视频教程和之前在这里提出的问题,但似乎没有一个能解决我的问题


非常感谢您的帮助

我使用.json服务帐户文件初始化。您可以从Firebase控制台生成它

我的初始化看起来像这样

const functions = require('firebase-functions');
const admin = require("firebase-admin");
const serviceAccount = require("./key.json");

const databaseURL = "https://xyz-prod.firebaseio.com";

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL
});

const db = admin.firestore()
const itemsRef = db.collection("items")

从哪里可以获取数据库url?对于我正在使用的firestore数据库,我无法找到它。我认为db url仅适用于实时数据库?此示例适用于firestore。格式为'https://.firebaseio.com这是完整的文档:我已经创建了另一个新的google默认服务帐户密钥,下载了JSON文件并设置了环境变量,现在我可以用我在上面问题中发布的相同代码连接并获取数据。