首页 > 解决方案 > 使用后未定义并将值保存到地图函数(Angular,TypeScript)中的数组中

问题描述

我最近在一个使用 Angular 和 TypeScript 的项目中工作。做 CRUD,我有下一个代码:

      // Return User's List from the DB
  get_AllUsers(){
    return this.fireservices.collection('users').snapshotChanges();
  }

  getAllUsersList() : User[]{
    let userList : User[];
    this.get_AllUsers().subscribe(users => {
      userList = users.map(e => {
          return {
            uid: e.payload.doc.id,
            ...
            visited: e.payload.doc.data()['visited']
          }
      }); //console.log(userList) here print the array correctly
    });
  return userList; //Here I received an undefined array, but I want the array with the data
  }

我使用 Firebase 作为数据库。我有一个为用户创建的模型(一种保存在数据库中的数据),我希望返回,返回列出的用户数组,但我收到一个未定义的数组。我怎么能解决这个问题?我已经添加了一些注释来解释错误。

PD。有没有办法直接在创建的模型中接收 Firebase 数据以在应用程序中使用它(在这种情况下为“用户”)?

谢谢。

标签: angulartypescript

解决方案


尝试直接做:

function getAllUsersList() : User[] {
  let userList : User[] = [];
  this.get_AllUsers().subscribe(users => {
    users.map(e => {
      userList.push({
        uid: e.payload.doc.id,
        visited: e.payload.doc.data()['visited']
      });
    });
  });
  return userList;
}

推荐阅读