#angular #typescript #ionic3
#angular #typescript #ionic3
Вопрос:
Я пишу приложение для списка покупок с помощью Ionic, и в настоящее время я пытаюсь интегрировать информацию в MongoDB с моим приложением Ionic.
Однако, когда я запускаю ionic serve
, единственное, что загружается в браузере, это Cannot GET /
. Я не уверен, где я ошибся в своем коде.
При компиляции я получаю сообщение об ошибке
Тип
Observable<{}>
не присваивается типуObservable<object[ ]>
.
Я думаю, проблема в getItems
функции. Любая помощь будет очень признательна!
getItems(): Observable<object[]> {
return this.http.get(this.baseURL '/api/groceries').pipe(
map(this.extractData),
catchError(this.handleError)
);
}
Комментарии:
1. Что вернет этот вызов api? объект или массив ?
2. Потому что вы пытаетесь назначить объект в массив объектов.
Ответ №1:
Вам нужно убедиться, что тип this.extractData
совпадает с типом вашей возвращаемой функции getItems(): Observable<object[]>
.
это означает, что если вы получите массив объектов из этого вызова api, то вам нужно иметь их оба как : Array<{}>
.
И для получения наилучших практик вы можете создать интерфейс для своего типа данных, добавив его в качестве наблюдаемого и переменного типа следующим образом:
export interface CustomData {
COUNT: number;
NAME: string;
}
Ваша переменная как :
public extractData: CustomData;
И ваша функция возвращает как:
getItems(): Observable<CustomData> {
И если вы не хотите ничего из этого делать, вы можете просто изменить тип своей функции any
примерно так: getItems(): Observable<any> {