【发布时间】:2018-12-08 19:31:10
【问题描述】:
我有一个 firebase 云函数,它将在 HTTP 请求上被调用,它工作正常。
现在,我想从 JSON 文件中读取一些业务逻辑的数据。以下是我尝试读取 JSON 文件的两种方式:
选项 #1) 将 JSON 文件保存在我的 nodejs 项目的“公共”目录中并进行部署。得到了我正在使用的托管 URL,如下所示。但它抛出一个错误说'错误:getaddrinfo ENOTFOUND ...'
选项 #2) 将 JSON 文件上传到 Firebase 云存储。没有找到任何例子来试试这个。最终得到以下代码:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
const Firestore = require('@google-cloud/firestore');
const firestore = new Firestore();
const http = require('http');
const url = require('url');
// Option #2 required variables
var storage = require('@google-cloud/storage');
const gcs = storage({projectId: "<Project ID>"});
const bucket = gcs.bucket("<bucket-name>");
const file = bucket.file("<filename.json>")
// HTTP Trigger
exports.functionName = functions.https.onRequest((req, res) => {
var request = require('request');
var paramValue = req.body.queryParam;
console.log(paramValue);
// Option #1 - Using hosted URL
var hostingURL = "https://xxxxxxxx.firebaseapp.com/filename.json";
console.log(hostingURL);
request({
url:hostingURL,
method: 'POST',
json:{ key: 'value' } },function(error, response, data) {
});
// Option #2 - Ended up here. Want to read from cloud storage bucket.
console.log(file);
});
有人可以帮我吗?
【问题讨论】:
-
请编辑您的问题,详细说明您的功能应该如何工作。你真正想说的是你尝试了一些东西,但这些东西并没有按照你期望的方式工作。除了“读取 JSON 文件”之外,您究竟需要完成什么,这有点模糊。
-
我的云函数是一个 HTTP 触发器,可以调用为“us-central1-xxxxx.cloudfunctions.net/…
”。我将“paramValue”值作为“request.query.queryParam”。现在,如果 JSON 文件中存在“paramValue”,我需要返回成功。为了将“paramValue”与 JSON 文件中的数据进行比较,我需要读取云函数中的 JSON 文件。如果您需要更多详细信息,请告诉我。 -
谢谢@DougStevenson。由于我想使用免费计划并将其演示到业务中,有没有办法实现选项#2?
-
是的,有可能。
标签: node.js firebase google-cloud-storage google-cloud-functions firebase-storage