[英]How can I target a deeply nested object in google realtime database?
我想做一個 cron 作業,刪除我的實時數據庫中超過 24 小時的深層嵌套對象。
我已經遍歷並到達了深層嵌套的 object,但我無法在 object 中獲取/定位“addTime”的值。 如何獲取該值以便可以在父級上運行.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);
});
});
這是我的實時數據庫中的數據以及來自無服務器雲功能的日志:
我認為您在循環時遇到問題,因為當您執行此操作時,“buckets.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;
});
....
}
....
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.