angular - 在迁移到 Angular 9 期间中断服务
问题描述
我通常使用这种方法从firebase中获取我的值。我没有问题getUsers ()
。
但是自从切换到 angularfire6 后,我的 getUserById 出现了问题:
"... data"
“错误:传播类型只能从对象类型创建”
import { Injectable } from "@angular/core";
import { User } from "../models/user.model";
import {
AngularFireDatabase,
AngularFireList,
AngularFireObject,
} from "@angular/fire/database";
import { Observable } from "rxjs";
import { switchMap, map } from "rxjs/operators";
import * as firebase from "firebase";
import DataSnapshot = firebase.database.DataSnapshot;
@Injectable({ providedIn: "root" })
export class UsersService {
users: AngularFireList<any>;
constructor(private database: AngularFireDatabase) {
this.users = database.list("users");
}
getUsers() {
return this.users.snapshotChanges().pipe(
map((actions) => {
return actions.map((a) => {
const data = a.payload.val();
const key = a.payload.key;
return { key, ...data };
});
})
);
}
getUserById(UserId: string) {
return this.database
.list("/users", (ref) => ref.orderByChild("id").equalTo(UserId))
.snapshotChanges()
.pipe(
map((actions) => {
return actions.map((a) => {
const data = a.payload.val();
const key = a.payload.key;
return { key, ...data };
});
})
);
}
}
毫无疑问,这是切换到“typescript”:“3.8.3”吗?谢谢您的帮助
解决方案
return this.database.list('/users', ref =>
ref.orderByChild("id").equalTo(UserId)).snapshotChanges().pipe(map(actions => {
return actions.map(a => {
const data: Object = a.payload.val();
const key = a.payload.key;
return {key, ...data} ;
推荐阅读
- java - JavaFX 中的多个 setOnAction 清理并在 5 个问题后停止应用程序
- android - Android:如何将自定义布局设置为透明
- bash - 根据文件名将文件移动到相应的文件夹
- java - 从查询中我会得到 2 行,但是在返回地图时我没有得到 2 行,我只得到最后一行
- mysql - mysql查询返回不正确的值
- python - Django 使用 datetime.date() 作为 DateField 的输入来实现过去的日期输入
- html - HTML5 日期时间本地选择器 日期和时间格式到另一个字段
- javascript - 如何永久更改烧瓶网页中单击按钮的外观?
- swap - 如何在 Clojure 中的映射嵌套向量中更新试剂原子过滤
- tensorflow - TensorFlow 数据集如何处理无法装入服务器内存的大数据?