gpt4 book ai didi

javascript - 使用 Angular 5 在 firebase 中存储数据时无法读取未定义的属性 'push'

转载 作者:行者123 更新时间:2023-11-30 19:51:18 25 4
gpt4 key购买 nike

这是我目前拥有的:

createPerson(name:any,lname:any,age:any,dept:any){
this.peopleList.push({
name: name,
lname: lname,
age: age,
dept: dept
}).then(_person =>{
this.navCtrl.push(HomePage);
},error=>{console.log(error)});}

最佳答案

这种语法似乎是一种 promise 。 promise 可以是 Promise<any[]> 类型但这并不意味着您可以使用 push()直接地。

另外,假设this.peopleListany[] , 它需要先初始化才能执行 this.peopleList.push() .

最后,你似乎想在 this.peopleList 之后做点什么收到一个新项目。你应该有一个可观察的/ promise ,并分两个阶段进行。一个它添加到数组并返回具有新值的数组,然后使用 .then.subscribe在第一个任务完成后执行操作。

编辑:

export interface AngularFireList<T> {
query: DatabaseQuery;
valueChanges(events?: ChildEvent[]): Observable<T[]>;
snapshotChanges(events?: ChildEvent[]): Observable<SnapshotAction<T>[]>;
stateChanges(events?: ChildEvent[]): Observable<SnapshotAction<T>>;
auditTrail(events?: ChildEvent[]): Observable<SnapshotAction<T>[]>;
update(item: FirebaseOperation, data: T): Promise<void>;
set(item: FirebaseOperation, data: T): Promise<void>;
push(data: T): database.ThenableReference;
remove(item?: FirebaseOperation): Promise<void>;
}

这是 AngularFireList 接口(interface)。通过快速检查,尝试类似的操作:

// It subscribes to the changes on the list and perform whatever you need upon change. 
// Put it after you initialized the peopleList
this.peopleList.valueChanges.subscribe((data) => {
this.navCtrl.push(HomePage);
}, error => console.log(error));

// This is adding a new item on the list, which will trigger the subscription above
this.peopleList.push({
name: name,
lname: lname,
age: age,
dept: dept
});

关于javascript - 使用 Angular 5 在 firebase 中存储数据时无法读取未定义的属性 'push',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54431868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com