从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
对象。在下面的屏幕截图中,当您查看控制台输出时,发现了两者之间的区别。
如您所见,一个是Array
的{{1}},另一个是{...}
的{{1}}。
希望有人可以帮助您解释/解决此问题。问题是,分配了从Firebase数据库中获得的数据并更新了应用程序(使用Array
)后,我的页面没有显示新数据,而是继续显示旧数据。 / p>
答案 0 :(得分:0)
问题出在完全不同的水平上。 RecipeService
是在错误的组件处提供的。