2016-10-26 4 views
0

Я пытаюсь проверить, существует ли запись в вызове API, который возвращает {data:null}, если запись не существует. Когда вызов решает я получаю следующее сообщение об ошибке:Ember.js FindRecord Invalid Id

Cannot read property 'constructor' of null

То, что я хочу сделать, это если запись не существует, я хочу, чтобы создать его. Если он существует, я хочу обновить модель. Не уверен, что я делаю неправильно.

Также я создал API для соответствия стандартам API JSON, чтобы я мог также изменить ответ сервера.

+0

Возможно, api должно вернуть 404, если сущность не существует (и никакой полезной нагрузки), что может помочь. Если вы хотите просто «ping» api, вы можете использовать [ajax addon] (https://github.com/ember-cli/ember-ajax). Но это может быть немного излишним. И последний вариант, который приходит на ум, заключается в том, что эта ошибка, вероятно, связана с сериализатором. Поэтому переопределить это, чтобы справиться с этим делом, также является жизнеспособным вариантом. – Keo

ответ

0

Я согласен с @Keo в том, что может быть проще настроить код ответа из API, но если у вас нет доступа к коду API, вы можете перехватить полезную нагрузку в normalizeResponse в сериализаторе, чтобы выполнить проверьте там.

import JSONAPISerializer from 'ember-data/serializers/json-api'; 

export default JSONAPISerializer.extend({ 
    /** 
    * normalize the response from the server to a format 
    * that ember data will work well with 
    */ 
    normalizeResponse(store, primaryModelClass, payload, id, requestType) { 
    if (!payload || !payload.data) { 
     // react to empty payload here 
    } else { 
     // pass through the payload with data to the store 
     return this._super(store, primaryModelClass, payload, id, requestType);  
    } 
    } 
});