【问题标题】:breaks a service during migration to Angular 9在迁移到 Angular 9 期间中断服务
【发布时间】: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


【解决方案1】:
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} ;

【讨论】:

  • 请添加描述
  • 只是说数据是一个对象
猜你喜欢
  • 2020-05-29
  • 1970-01-01
  • 2020-06-15
  • 2017-05-31
  • 2018-11-14
  • 2021-09-27
  • 1970-01-01
  • 2012-08-28
  • 2022-11-20
相关资源
最近更新 更多