我正在以33赫兹向Firestore发送数据这意味着随着时间的推移,大量的数据被存储。
我需要下载这些数据。为此,我在firebase中创建了一个Http函数,用于接收用户uid,设备序列号,开始日期/时间和结束日期/时间。然后,该函数测试用户是否存在,以及他是否具有该序列号。然后它查询firestore并将数据附加到JSON对象,最终作为响应发送。
但是,根据查询的时间长短,函数将超时。它在短时间内确实有效。
我该怎么做才能使函数更快?我用错工具了吗?
[...]
const nD1 = db.collection('grind-bit').doc(req.query.serial).collection('history').where('date', '>=', startdate).where('date', '<=', enddate).get().then(snapshot => {
snapshot.forEach(doc => {
elem = {};
elem.date = doc.data().date;
elem.rms0 = doc.data().rms0;
elem.rms1 = doc.data().rms1;
elem.rms2 = doc.data().rms2;
data[key].push(elem);
});
if(data[key].length) {
let csv = json2csv(data[key]);
csv = JSON.stringify(csv);
res.set("Content-Type", "text/csv");
return promises.push(res.status(200).send(csv));
} else {
return promises.push(res.status(401).send('No data has been found in this interval.'));
}
[...]
1条答案
按热度按时间aij0ehis1#
如果超时是由于您试图一次性读取/返回太多数据而导致的,则可能需要考虑限制返回的数据量。通过向查询添加
limit()
子句,可以限制它最多返回多少数据。这当然意味着您可能需要多次调用HTTP函数以确保处理所有数据。最简单的方法是:如果您得到100个结果(或您指定任何限制),请在处理完这些结果后再试一次。
另见: