我使用Firebase Emulator Suite在本地运行和调试Cload函数,如本指南所述:https://firebase.google.com/docs/functions/local-emulator
我已经准备好使用其中的一些数据的Cload Firestore数据库。
我尝试通过本地模拟的cload函数从Cload Firestore获取数据。
到目前为止,我的方法是遵循https://cloud.google.com/community/tutorials/cloud-functions-firestore中的“编写云功能代码”部分
我的functions / src / index.ts文件如下:
import * as functions from 'firebase-functions';
const Firestore = require('@google-cloud/firestore');
const cors = require('cors')({origin: true});
const admin = require('firebase-admin');
admin.initializeApp();
const PROJECTID = 'XYZ';
const firestore = new Firestore({
projectId: PROJECTID
});
const logger = function(object: any){
console.log(JSON.stringify(object));
}
export const create_order = functions.https.onRequest((request, response) => {
cors(request, response, () => {
// var test_doc_id = "82GKB2P6xee9lftOidDj";
const trucks = firestore.collection("trucks").get();
logger(trucks);
response.send(JSON.stringify(firestore));
});
});
我希望“卡车”的价值包含来自消防站的所有卡车的排列,但不会返回“ {}”的结果。
有人可以给我一些提示,指南和建议,如何以正确的方式做到这一点吗?
最诚挚的问候,谢谢您的帮助
答案 0 :(得分:1)
firestore.collection("trucks").get()
returns a Promise。
如果要注销数据,可以编写一个异步方法:
cors(request, response, async () => {
const trucks = await firestore.collection('trucks').get();
logger(trucks);
// ...
});
答案 1 :(得分:0)
我认为您可以使用GOOGLE_APPLICATION_CREDENTIALS
环境变量来控制正在监听的DB函数。不运行将监听本地,而运行生产firebaseAdminSdkServiceAccount.json
则将监听生产数据库中的更改。
在Windows上,您可以像这样从终端启动它:
SET GOOGLE_APPLICATION_CREDENTIALS=/config/firebaseAdminSdkServiceAccount.json
firebase emulators:start
然后侦听您参考的Firestore文档更改:
const functions = require('firebase-functions');
functions.firestore.document('/mydoc/{mydocId}').onWrite(...)
编辑:为确保我是对的,我做了一些谷歌搜索,并提出了以下解释:
使用仿真器:开始时,我们希望将人员保留在本地 仿真环境,除非他们明确要求被打破。 现在,您可以要求通过手动恢复 在模拟器中运行时,GOOGLE_APPLICATION_CREDENTIAL文件。
https://github.com/firebase/firebase-tools/issues/1412#issuecomment-504561828