当我将对象数组放入Firefox(使用打字稿)并获取数据时,我是否无法将其作为对象数组获取?

时间:2019-07-19 08:07:55

标签: json angular typescript http get

从Firebase数据库保存和检索数据不会得到相同类型的数据。下面,我将解释我在做什么以及正在遇到什么:

保存数据

我正在使用以下代码将Recipe数组保存到Firebase数据库:

save() {
  this.http.put(
    this.recipeURL,
    this.recipesService.getRecipes()
  ).subscribe(
    (response) => {
      console.log(response);
    }
  );
}

使用Array来检索Recipe个对象的RecipeService的代码非常简单:

getRecipes() {
  return this.recipes.slice();
}

Recipe模型的定义如下(没什么花样):

export class Recipe {
  public id: number;
  public name: string;
  public description: string;
  public imagePath: string;
  public ingredients: Ingredient[];

  constructor(id: number, name: string, desc: string, imagePath: string, ingredients: Ingredient[]) {
    this.id = id;
    this.name = name;
    this.description = desc;
    this.imagePath = imagePath;
    this.ingredients = ingredients;
  }
}

检索数据

然后,我使用以下代码检索数据:

read() {
  this.http.get<Recipe[]>(
    this.recipeURL
  ).subscribe((recipes) => {
    console.log(recipes);
    console.log(this.recipesService.getRecipes());
  })
}

结果/问题

在代码中,我记录了get方法的响应以及要替换的Recipe对象的原始列表。看来我正在检索Array对象的Json,而不是Recipe对象。在下面的屏幕截图中,当您查看控制台输出时,发现了两者之间的区别。

enter image description here

如您所见,一个是Array的{​​{1}},另一个是{...}的{​​{1}}。

希望有人可以帮助您解释/解决此问题。问题是,分配了从Firebase数据库中获得的数据并更新了应用程序(使用Array)后,我的页面没有显示新数据,而是继续显示旧数据。 / p>

1 个答案:

答案 0 :(得分:0)

问题出在完全不同的水平上。 RecipeService是在错误的组件处提供的。