【发布时间】:2020-06-10 01:03:07
【问题描述】:
我已经部署了一个云函数,它加载一个 API 并将其内容保存到我的 Firestore 数据库中。当我使用 firebase 模拟器在本地环境中运行云功能时,它运行良好。但是,当我将相同的功能部署到 Google Cloud Platform 时,尽管它成功加载了 API,但它无法将内容保存到 Firestore。我的设置中还缺少什么?
这里是代码。我特意修改了 API 链接。
const functions = require('firebase-functions');
const rp = require('request-promise');
const admin = require('firebase-admin');
const axios = require('axios');
admin.initializeApp({
credential: admin.credential.applicationDefault()
});
exports.savePSEData = functions.https.onRequest((req, res) => {
const url = <LINK REDACTED>;
return new Promise((resolve, reject) => {
axios
.get(url)
.then(response => {
const date = response.data.as_of;
for (var index in response.data.stock) {
var stock = response.data.stock[index]
createStockDocument(date, stock.symbol, stock.price.amount, stock.percent_change, stock.volume, callback => {
console.log(index)
})
}
return res.status(200).send("ok");
})
.catch(error => {
console.log(error);
return res.status(500).send(error);
});
})
});
function createStockDocument(date, symbol, amount, percentChange, volume, callback) {
console.log("Creating temp package")
const docRef = admin.firestore().doc(`${symbol}/${date}`);
docRef.set({
amount: amount,
percent_change: percentChange,
volume: volume
})
.then(docRef => {
console.log('Document created')
return callback(docRef)
}).catch(error => {
console.log(`Error trying to create document ${error}`)
return callback(error);
})
}
【问题讨论】:
标签: javascript node.js firebase google-cloud-firestore google-cloud-functions