所以我正在使用AngularFire2构建应用程序,这是在服务中,但是当函数搜索运行时,它调用错误响应.json不是函数。 Firebase会返回一个可观察的内容,我不确定为什么这个代码段无法正常工作。
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import { Article } from '../models/index';
search(term: string): Observable<Article[]> {
return this.af.database
.list('/articles/', {
query: {
orderByChild: "title",
equalTo: term,
limitToFirst: 10
}
})
.map(response => response.json().data as Article[]);
}
答案 0 :(得分:3)
AngularFire2&#39; s list
observable不会发出HTTP响应对象。它会发出一组匿名对象,表示与查询匹配的项目。
如果Article
是一个界面,您可以删除map
运算符并自行投射observable:
import { Observable } from 'rxjs/Observable';
import { Article } from '../models/index';
search(term: string): Observable<Article[]> {
return this.af.database
.list('/articles/', {
query: {
orderByChild: 'title',
equalTo: term,
limitToFirst: 10
}
}) as Observable<Article[]>;
}
如果Article
是一个类,则应使用map
运算符创建实际的Article
实例(使用合适的构造函数):
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import { Article } from '../models/index';
search(term: string): Observable<Article[]> {
return this.af.database
.list('/articles/', {
query: {
orderByChild: 'title',
equalTo: term,
limitToFirst: 10
}
})
.map(list => list.map(item => new Article(item));
}