0

我是Angular和Ionic的新手。我已经开始了一个将项目添加到Firebase Db的简单应用。到现在为止还挺好。如何将与数据库相关的代码移动到单独的服务?

我有我的组件TS文件两种方法:

add(item: string) { 
    this.items.push({ 
    item: item 
    }) 
    .catch(error => console.log('ERROR ' + error)); 
} 

remove(key: string) { 
    this.af.object(`/items/${key}`).remove() 
    .catch(error => console.log('ERROR ' + error)); 
} 

我想移动上述方法,以一个单独的服务类,所以我创建一个新的文件:

import {Injectable} from "@angular/core"; 

@Injectable() 
export class ItemService { 
    constructor() { 
    } 
} 

但上述方法参考items这是一个FirebaseListObservable和af这是一个AngularFireDatabase注入控制器。

如何修改上述2种方法以便它们可以在服务中移动?

回答

0

白色的注射服务,你开始和定义这些方法。然后firebase数据库将返回一个observable,并在您的服务中,您可以处理这些数据,然后再次返回可订阅消费和处理视图的可观察项。

@Injectable() 
export class ItemService { 
    constructor(private firebaseService: FirebaseService) { 
    } 

add(item: string) { 

    // if firebase service returns observable, then map will precess and return observable whcih can be subscribed 
    this.fireBaseService.get().map((data) => { 
    return this.items.push({ 
     item: data.item 
    }) 
    .catch(error => console.log('ERROR ' + error)); 
    }) 
} 


// same f0r remove 
remove(key: string) { 
    return this.af.object(`/items/${key}`).remove() 
    .catch(error => console.log('ERROR ' + error)); 
} 
} 
// if I understood the question correctly 
相关问题