У меня есть базовая c пользовательская база данных в firebase, где каждый пользователь сохраняется под своим uid с адресом электронной почты, именем и списком «друзей».
Я пытаюсь создать список друзей на клиенте (который я затем фиксирую в хранилище vuex), опрашивая всех пользователей, у которых есть ребенок в узле «друзей», чей ключ совпадает с ключом текущего пользователя ...
Я пробовал несколько параметры, но ничего не работает ...
Что-то вроде:
let friendsList = fb.db.ref('users');
friendsList.where('friends').orderByChild(`${uid}`, '==', true)
Моя структура базы данных:
Любая точка в правильном направлении была бы удивительной!
ОБНОВЛЕНИЕ: написал эту короткую MF в то же время. Но есть миллион лучших вариантов:
fetchFriends({ commit }, uid) {
let userList = fb.db.ref('users');
userList.on('value', snap => {
let finalFriendList = []
let data = snap.val()
console.log('data', data)
let userUIDS = Object.keys(data)
//then we check teh data to see if friends object includes the user
userUIDS.map( id => {
let userFriends
userFriends = data[id].friends
let userFriendsKeys = Object.keys({...userFriends})
userFriendsKeys.forEach( friend => {
if (friend === uid) {
console.log('fire', id)
let friendObj = {}
friendObj.uid = id
friendObj.name = data[id]['name']
friendObj.isOnline = data[id].isOnline
friendObj.email = data[id]['email']
finalFriendList.push(friendObj)
}
})
})
//return friends whose child of 'friends' has a child
console.log('final array', finalFriendList)
commit('setFriends', finalFriendList)
})
},