我有一个firebase云功能,它将在正常工作的HTTP请求上调用。
现在,我想从JSON文件中读取某些业务逻辑的数据。以下是我尝试读取JSON文件的2种方法:
选项#1)将JSON文件保存在我的nodejs项目中的“ public”目录中,并进行了部署。得到了一个我正在使用的托管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);
});
有人可以帮我吗?
答案 0 :(得分:4)
您可以将.json文件放在index.js所在的文件夹中。然后,您可以执行以下操作:
const config = require('./config.json');
console.log(config.foo);
给出以下config.json文件:
{
"foo" : "bar"
}
答案 1 :(得分:2)
如果您的文件位于Firebase Could Storage中,则可以使用以下方法:
const admin = require('firebase-admin');
admin.storage().bucket().file("yourDirForFile/yourFile.json")
.download(function (err, contents) {
if (!err) {
var jsObject = JSON.parse(contents.toString('utf8'))
}
});
您可以根据需要使用变量jsObject。它现在在内存中。