使用 Node.js 将 json 文件写入 Firebase?
Posted
技术标签:
【中文标题】使用 Node.js 将 json 文件写入 Firebase?【英文标题】:Write json file to Firebase with Node.js? 【发布时间】:2017-11-28 04:59:41 【问题描述】:我有一个第三方 API,我需要每 5 秒调用一次。我得到 JSON 作为响应,我想使用 Node.js 将 JSON 内容写入 Firebase 节点。基于 Firebase 示例,我可以使用以下代码导入数据:
var usersRef = ref.child("users");
usersRef.set(
alanisawesome:
date_of_birth: "June 23, 1912",
full_name: "Alan Turing"
,
gracehop:
date_of_birth: "December 9, 1906",
full_name: "Grace Hopper"
);
Curl 示例也有效。但我真正想做的是使用 API 端点将第三方 API 响应直接导入我的 Firebase 数据库。我如何使用 Node.js 做到这一点?
【问题讨论】:
【参考方案1】:首先,您需要向 api 端点发出请求并接收数据。 然后,您可以将该 json 数据发送到 firebase
var request = require('request');
var usersRef = ref.child("users");
request('<your_endpoint>', function (error, response, body)
if (!error && response.statusCode == 200)
var asJson = JSON.parse(body)
usersRef.set(asJson)
)
【讨论】:
【参考方案2】:我在实现 Firebase 文档中的示例 node.js 代码时遇到了很多小“陷阱”。下面是一个完整工作的代码集,纠正了将作为 Google Cloud Platform 函数运行的所有问题(node.js v8 - async/await
在 v6 中不起作用):
const admin = require('firebase-admin');
// You need this library in order to use firebase in functions
const functions = require('firebase-functions');
/**
* Responds to any HTTP request.
*
* @param !express:Request req HTTP request context.
* @param !express:Response res HTTP response context.
*/
exports.uploadFile = async (req, res) =>
// Check if firebase is already initialized, per: https://maxrohde.com/2016/09/21/test-if-firebase-is-initialized-on-node-js-lambda/
if (admin.apps.length === 0)
admin.initializeApp(functions.config().firebase);
var db = admin.firestore();
var message = '';
createUsers(db);
message = await getUsers(db);
res.status(200).send('Database content:\n' + message);
;
// Write data in a function so you can wait for all the Promises to complete and return per: https://github.com/firebase/functions-samples/issues/78
function createUsers(db)
var docRef = db.collection('users').doc('alovelace');
var setAda = docRef.set(
first: 'Ada',
last: 'Lovelace',
born: 1815
)
.catch((err) =>
console.log('Error writing document', err);
);
var aTuringRef = db.collection('users').doc('aturing');
var setAlan = aTuringRef.set(
'first': 'Alan',
'middle': 'Mathison',
'last': 'Turing',
'born': 1912
)
.catch((err) =>
console.log('Error writing document', err);
);
return Promise.all([setAda, setAlan]);
async function getUsers(db)
var message = '';
await db.collection('users').get()
.then((snapshot) =>
snapshot.forEach((doc) =>
// You need to stringify doc.data() if you want to render it outside of a console.log()
message += '\n' + doc.id + '=>' + JSON.stringify(doc.data());
);
)
.catch((err) =>
console.log('Error getting documents', err);
);
return message;
【讨论】:
以上是关于使用 Node.js 将 json 文件写入 Firebase?的主要内容,如果未能解决你的问题,请参考以下文章
使用 node.js 将 JSON 写入 mysql 数据库