【发布时间】:2020-04-07 08:51:50
【问题描述】:
我通常使用这种方法从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”吗?谢谢你的帮助
【问题讨论】:
-
这很可能是由于 TS 升级造成的,但是您的 API 方法的返回类型是什么? TS 推断
data变量是什么? (如果使用 VS Code,将鼠标悬停在变量名上会弹出一个弹出窗口。) -
就像 TS 版本本身并没有什么可做的,它只是告诉我们 TS 正在检查一些以前没有的东西。
-
传播类型只能从对象类型创建。常量数据:未知
-
这些将是您服务中的错误类型。你在使用一些框架吗?
标签: angular typescript firebase angularfire spread