如何在Angular中使用FeathersJS REST

问题描述 投票:0回答:1

我正在努力让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有一个错误,因此它不编译,但是一旦下载就在本地编译。

angular typescript rxjs angular2-observables feathersjs
1个回答
1
投票
import { from } from 'rxjs';
...
return from(this.feathers
      .service('/experiences')
      .find({
        query: {
          $limit: 25
        }
      }));

羽毛查找方法返回一个Promise。您需要将其转换为Observable。

© www.soinside.com 2019 - 2024. All rights reserved.