如何读取JSON文件数据并在Firebase Cloud函数中使用它

时间:2018-06-29 14:57:28

标签: node.js firebase google-cloud-storage google-cloud-functions firebase-storage

我有一个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);

});

有人可以帮我吗?

2 个答案:

答案 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。它现在在内存中。