Javascript 如何在google realtime数据库中定位一个深度嵌套的对象?
我想做一个cron作业,删除实时数据库中超过24小时的深度嵌套对象 我已经遍历并到达了深度嵌套的对象,但我无法获取/确定对象中“addedTime”的值。如何获取该值以便在父级上运行Javascript 如何在google realtime数据库中定位一个深度嵌套的对象?,javascript,firebase-realtime-database,google-cloud-platform,google-cloud-functions,Javascript,Firebase Realtime Database,Google Cloud Platform,Google Cloud Functions,我想做一个cron作业,删除实时数据库中超过24小时的深度嵌套对象 我已经遍历并到达了深度嵌套的对象,但我无法获取/确定对象中“addedTime”的值。如何获取该值以便在父级上运行.remove?到目前为止,它返回为未定义或抛出错误 .schedule("every 1 hours") .onRun(context => { const rootDatabaseRef = admin.database().ref("ghostData/"); return roo
.remove
?到目前为止,它返回为未定义或抛出错误
.schedule("every 1 hours")
.onRun(context => {
const rootDatabaseRef = admin.database().ref("ghostData/");
return rootDatabaseRef.ref.once("value").then(function(snapshot) {
console.log("snap", snapshot.val());
snapshot.forEach(function(userSnapshot) {
let buckets = userSnapshot.val().buckets;
console.log("buckets", buckets);
buckets.forEach(function(bucket) {
let currentTimeYesterday = new Date(
new Date().getTime() - 24 * 60 * 60 * 1000
).getTime();
let addedTime = bucket.val().addedTime;
console.log("curr time", currentTimeYesterday);
console.log("addedTime", addedTime);
});
});
以下是我的实时数据库中的数据以及来自无服务器云功能的日志:
我认为您在循环方面遇到了问题,因为当您执行此操作时,“bucket.forEach(function(bucket)”-->bucket是列表中的第一个元素, 每个元素都有一个嵌套字典,所以首先你必须迭代字典,对于字典中的每个键,你会得到另一个字典,你必须抓取 只有增加的时间值 我知道这很难理解,但我认为这是因为你没有正确地循环 请尝试下面的代码或类似的代码
buckets.forEach(function(bucket){
let currentTimeYesterday = new ......
bucket.forEach(function(dict){
Object.keys(dict).forEach(k => {
console.log(k, ':', dict[k].addedTime);
let addedTime = dict[k].addedTime;
});
....
}
....
}
看起来你的帖子缺少了一些东西。嘿,道格,你能详细说明一下吗?第一个目标是针对“addedTime”,我不能。你添加的链接没有显示出来。注意,它是(到目前为止)最好将所有信息都放在问题本身内部,而不是外部服务的链接中。这是有意义的。我已将所有信息添加到问题中。希望它能提供更多信息。