[英]how to get items from array on respectively
我有一個包含唯一鍵的數組,這些鍵我想帶它從firebase實時數據庫中獲取他的數據,像這樣的數組
["dtnMG3dVEQXL1TPct3awl927jax2", "y5eAQppoEZRELsDL3hLbY5b0A763"]
所以我使用forEach
方法對其進行了迭代,以獲取單個密鑰以檢查是否在用戶樹中找到了,但是結果是否為null?
但是當我記錄keys.forEach(key => console.log(key))
我可以在一行中獲取每個鍵
firebase
.database()
.ref("users")
.child(keys.forEach(key => key))
.once("value")
.then(users => {
// let username = users.val().username;
console.log(users.val());
// Object.assign(users, { [Object.keys(users)]: username });
});
這樣就可以獲取每個用戶名了,現在的新問題是我想將這些名稱保存到我擁有的其他對象中
users = {
dtnMG3dVEQXL1TPct3awl927jax2: // the unique key
-LmUSeyWtBPqcoN8l6fd: [{…}]
-LmUgcbdzElxWpLkN-F9: [{…}]
// here's i want to add somthing like thies
-username : "userOne" //I got it from the Looping
y5eAQppoEZRELsDL3hLbY5b0A763:
-LmSTYlxa7bjy0Beazmy: [{…}]
-LmUad3lvkPdTQDFo4Ds: [{…}]
-LmUyDmGcEmYKOJnvEiA: [{…}]
// here's i want to add somthing like thies
-username : "userTwo" // I got it from the Looping
}
.child(keys.forEach(key => key))
-這是您的問題。 此forEach
有效地一一返回所有數組值。 但是你把它與被調用一次 一個參數的函數里面。 因此,它將僅檢查數組中的第一個值,其余的將被轉儲,因此就像在1元素數組中查找一樣。
解決方案是在迭代內執行數據庫調用:
keys.forEach( key => {
firebase
.database()
.ref("users")
.child(key)
.once("value")
.then(users => {
// let username = users.val().username;
console.log(users.val());
// Object.assign(users, { [Object.keys(users)]: username });
}});
編輯:
假設變量curUser
擁有您要插入的用戶名,並且curKey
是與該用戶名相關聯的密鑰,那么在完成編輯后要執行的操作就是: users[key]["username"] = curUser;
。 這將引用users
對象中以curKey命名的屬性,並將在其中創建“用戶名”屬性並將值存儲在其中。
請注意,如果您在此鍵對象中已經具有“用戶名”屬性,它將被覆蓋。
**我假設“用戶”內部鍵屬性的數據結構是對象,即使您的代碼沒有真正顯示出來。
keys.forEach(key => key)
這將返回數組keys
每個元素。 然后,您將這些元素傳遞給child
。 然而, child
的功能預計只有一個參數。
嘗試這個:
for( let key of keys){
firebase
.database()
.ref("users")
.child(key)
.once("value")
.then(users => {
// let username = users.val().username;
console.log(users.val());
// Object.assign(users, { [Object.keys(users)]: username });
});
}
不支持:請勿在forEach
循環中調用async
函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.