Ниже приведена пара документов, которые я получаю из магазина:
Вот метод, который я использую:
private _mechanics = new BehaviorSubject<User[]>([]);
fetchMechanics() {
return of(
firebase.firestore().collection("users").where("isMechanic", "==", false)
.get()
.then((docs) => {
const data = []
docs.forEach((doc) => {
data.push(doc);
});
console.log('Service Data:', data);
this._mechanics.next(data)
}).catch((err) => {
console.log(err);
})
);
}
Теперь я хочу преобразовать данные в соответствии с моим UserData
интерфейсом:
interface UserData {
userId: string,
userName: string,
isMechanic: boolean,
location: PlaceLocation
}
Может кто-нибудь сказать, какие изменения мне нужно внести в fetchMechanics()
, чтобы сделать это?
Вот пример данных в firestore:
Также я пытался скопировать приведенный ниже код, но это не так До сих пор работал:
private _users = new BehaviorSubject<User[]>([]);
fetchUsers() {
return this.http
.get<{ [key: string]: UserData }>('firebaseUrl/users.json')
.pipe(map(resData => {
const users = [];
for (const key in resData) {
if (resData.hasOwnProperty(key)) {
users.push(
new User(
key,
resData[key].userName,
resData[key].isMechanic,
resData[key].location)
);
}
}
return users;
}),
tap(users => {
this._users.next(users);
})
);
}