javascript - 在firebase云函数中调用admin.initializeApp()结束时是否需要调用app.delete()
问题描述
我正在编写一个云函数,其中我在 for 循环中使用新名称创建或初始化 firebase 应用程序,我的问题是,是否有必要在每个实例上调用 app.delete() 函数?
snapshot.forEach(doc => {
counter++;
// console.log(counter," in first");
// console.log(doc.id, " is the doc ID");
var home = doc.get('home');//e.g: hyperoffice
var switches = doc.get('switches');
var action = doc.get('action');//ON or OFF
var repeat=doc.get('repeat');// true or false
try {
// console.log("home ", home, " switches ", switches);
let defapp = admin.initializeApp({ databaseURL: databaseUrl }, `${home}${counter}`);
var databaseUrl = `https://${home}.firebaseio.com/`;
switches.forEach(s => {
let dbRef = admin.database(defapp).ref(`Controls/${s}`);
dbRef.once("value").then(val => {
var data = val.val();
// console.log("this is data", data);
var payload_on = data.payload_on;
var payload_off = data.payload_off;
let valRef = admin.database(defapp).ref(`Controls/${s}/value`);
if (action === "ON") {
// on the device
return valRef.set(payload_on);
}
else if (action === "OFF") {
//off the device
return valRef.set(payload_off);
} else {
console.log("Undefined action field in firestore");
}
return null;
}).catch(err => {
console.log("Error", err);
});
});
} catch (error) {
console.log("Eroor: ", error);
}
finally {
console.log("in finally block 67");
}
});
解决方案
严格来说,您不必这样做,但是随着时间的推移您会泄漏大量内存,并且您的函数可能会在将来的调用中崩溃。您的函数应始终在终止之前清理未使用的内存。这意味着您应该删除所有已初始化的应用程序,除非您想在将来的调用中使用完全相同的应用程序实例。
推荐阅读
- python - 转换时间以 %H:%M:%S:%f 为 83 天,17:02:10.401369 python
- echarts - 如何控制散点图中labelLine的位置
- reactjs - setState 函数后 DOM 重新加载
- slurm - Slurm 批量作业失败
- apache-kafka - 在kafka connect中,leader节点通常是做什么的?
- python - pyspark 将第一个 n 文件读入 df
- r - 使用循环查找列表的单根
- java - 如何从主屏幕唤醒 Android 应用并执行搜索等操作
- reactjs - 如何在 React-Ionic 中插入自定义组件?
- node.js - 节点 child_process 异步事件处理程序