【发布时间】:2018-08-13 19:40:50
【问题描述】:
我想使用 Firebase 云功能通过触发器从外部 url 获取数据。但是,获取数据和更新特定节点不起作用。
怎么了?我的 Firebase 计划是 Blaze。
功能错误:print screen 1
数据库错误:print screen 2
外部数据结构 - JSON
{
"results": [
{
"details_a": "15+ Heavy duty truck comprising of T800 ...",
"equipment_id": "ChIJW6AIkVXemwARTtIvZ2xC3FA"
}
],
"status": "OK"
}
index.js
'use strict';
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
const request = require('request');
exports.setDetails = functions.database.ref('/equipment/{pushId}').onWrite((event) => {
if (event.data.previous.exists()) { return }
if (!event.data.exists()) { return }
const post = event.data.val();
if (post.details){ return };
const number = post.number;
const details = '';
request.get({
uri: 'https://api.domain.com/json?partnumber=' + number,
json: true,
headers: {
'Content-Type' : 'application/json' ,
}
}, (error, response) => {
if (error) {
console.error(error);
} else {
details = response.results[0].details_a;
console.log('Response: ', response.headers);
res.status(200).end('OK');
}
});
return admin.database().ref('/equipment/{pushId}').update({number: number, details: details});
});
【问题讨论】:
-
由于它抱怨
results字段为undefined,因此记录整个响应并查看发生了什么可能很有用。 -
请不要在问题中显示错误图片和代码。最好将文本复制并粘贴到问题中的代码块中,这样更易于阅读和搜索。
标签: javascript firebase google-cloud-functions firebase-admin