将Firebase云功能与Google BigQuery结合使用时.触发此功能时,有时会随机抛出错误. 这是我们的错误日志: Error: read ECONNRESET at exports._errnoException (util.js:1026:11) at TLSWrap.onread (net.js:569:26) 这是我
这是我们的错误日志:
Error: read ECONNRESET at exports._errnoException (util.js:1026:11) at TLSWrap.onread (net.js:569:26)
这是我同事的代码.
const bigQuery = require('@google-cloud/bigquery'); const admin = require('firebase-admin'); const database = admin.database(); exports.updateAllPlaceStatistics = (request, response) => { const secret = request.query['secret']; if (secret !== 'secret') { return response.json({message: 'Request failed!'}); } const big = bigQuery(); return big.query({ query: [ 'SELECT place.id, COUNT(DISTINCT beacon.id) as beacons, COUNT(DISTINCT promotion.id) as promotions, placeUsers.users as users', 'FROM `omega.sw_places` as place', 'LEFT JOIN `omega.sw_promotions` as promotion ON promotion.place_id = place.id', 'LEFT JOIN `omega.sw_beacons` as beacon ON beacon.place_id = place.id', 'LEFT JOIN `omega.view_users_per_place` as placeUsers ON placeUsers.id = place.id', 'GROUP BY place.id, placeUsers.users' ].join(' '), params: [] }).then((data) => { const rows = data[0]; let result = {}; for (let index = 0; index < rows.length; index++) { const item = rows[index]; result[item.id] = { beacons: item.beacons, promotions: item.promotions }; } return database.ref('statistics/general').set(result); }).then(() => { return response.json({message: 'Request succeeded!'}); }).catch((error) => { console.log('An error has happened to the big_query.js'); console.log(JSON.stringify(error)); return response.json({message: 'Request failed!'}); }); };
出了什么问题?
尝试从return database.ref(‘statistics / general’)中删除返回.set(result);返回已解决的promise将结束函数执行.在这种情况下,你的.set()在BigQuery之前结束,BigQuery在BigQuery之前结束了这个功能.