我试图通过forEach循环从Firebase中删除特定的数据,但是只删除了第一项。 其余的都跳过了。 我搞不懂这个。 感谢任何帮助。
下面是我正在使用的整个文件,在这里拆分为几个部分:
var admin = require("firebase-admin");
var moment = require('moment');
var serviceAccount = require("path-to-json.json");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "app.firebaseio.com"
});
var db = admin.database();
通过首先获取所有数据来移除数据的函数调用
function removeOldData() {
var ref = db.ref('/App/Items/');
var itemValue;
ref.on("value",
function (snapshot) {
snapshot.forEach(element => {
itemValue = element.val();
if(itemValue.date === 'Invalid date' || itemValue.date === '') {
deleteData(element.key);
}else {
date = moment(itemValue.date, "MMMM DD, YYYY").format()
if(moment().diff(date, 'days') > 14){
deleteData(element.key);
}
}
});
},
function (errorObject) {
console.log("The read failed: " + errorObject.code);
}
);
}
删除项目功能
function deleteData(key) {
console.log("Deleting ... " + key);
var ref = db.ref('/App/Items/' + key + '/');
ref.remove();
}
出口
module.exports = { removeOldData };
经过更多的尝试和研究,使用ref.once
为我修复了这个问题。