我正在努力让Feathers使用Angular来对抗Feathers REST服务器。似乎没有要求。
我有一个Feathers服务器,其资源http://example.com/app/experiences以Feathers分页格式返回数据:
{
"total": 1,
"limit": 10,
"skip": 0,
"data": [
{
"_id": "5db5ef8dc64f59001d750c72",
... etc ..,
}
]
在客户端上,我有一个Feathers服务,可集中所有服务配置:
@Injectable()
export class Feathers {
private _feathers = feathers();
private feathersRestClient = feathersRestClient('http://example.com/app');
constructor() {
this._feathers
.configure(this.feathersRestClient.angular)
.configure(rx({
idField: '_id'
}));
this._feathers.use('/experiences', new FeathersGenericService());
}
// expose services
public service(name: string) {
return this._feathers.service(name);
}
}
FeathersGenericService只是我从https://docs.feathersjs.com/guides/basics/services.html#service-methods获得的通用类:
export class FeathersGenericService implements ServiceMethods<any> {
async find(params: Params) {}
async get(id: Id, params: Params) {}
async create(data: any, params: Params) {}
async update(id: NullableId, data: any, params: Params) {}
async patch(id: NullableId, data: any, params: Params) {}
async remove(id: NullableId, params: Params) {}
}
然后,我有一个简单的ExperienceService,它仅找到前25个结果:
export class ExperienceService {
constructor(private feathers: Feathers) { }
experiences$() {
return from((this.feathers
.service('experiences'))
.watch()
.find({
query: {
$limit: 25
}
}));
}
}
最后是组件:
export class ExperienceListComponent implements OnInit {
experiences$: Observable<any[]>;
constructor(private eservice: ExperienceService) {}
ngOnInit() {
this.eservice.experiences$().subscribe(res => {
console.log(res);
return res;
});
}
}
但是“ res”如何未定义...在“网络”标签中,我没有看到对API的任何请求。
我在做什么错?
EDIT:我创建了此Stackblitz:https://stackblitz.com/edit/angular-qfysld
[Stackblitz和Feathers有一个错误,因此它不编译,但是一旦下载就在本地编译。
import { from } from 'rxjs';
...
return from(this.feathers
.service('/experiences')
.find({
query: {
$limit: 25
}
}));
羽毛查找方法返回一个Promise。您需要将其转换为Observable。