Ember-data: Создать запись, если она не существует?
У меня есть вычисленное свойство, в котором я пытаюсь создать запись, если она не существует, но продолжаю получать jQuery.Deferred exception
при попытке визуализации вычисляемого свойства.
Вот что у меня так далеко:
deadlineDay: computed(function() {
const oneWeekFromNow = moment().startOf('day').add(1, 'week');
const store = this.get('store');
return store.queryRecord('deadline-day', {
filter: {
date: oneWeekFromNow
}
}).then(result => {
if (!result) {
result = store.createRecord('deadline-day', {
date: oneWeekFromNow
});
result.save();
}
return result;
});
}),
Затем в моих шаблонах я пытаюсь сделать рендеринг с помощью простого помощника:
{{display-date deadlineDay.date}}
{{display-date}}
помощник просто звонит return date.format('dddd, MMM Do')
Похоже, что Эмбер пытается выполнить само обещание вместо того, чтобы ждать его исполнения.
Это приводит к ошибке, так как .format
это не метод обещания.
Я предполагаю, что это чрезвычайно распространенный вариант использования, но у меня есть ошибка в понимании. Большая помощь приветствуется!
Я не уверен, что это уместно, но мое хранилище резервных копий - sessionStorage через ember-local-storage
1 ответ
Я согласен с тем, что Эмбер может пытаться выполнить само обещание, а не ждать, пока обещание не будет выполнено. К сожалению, в настоящее время я не могу воспроизвести ошибку.
В Ember.js обычно рекомендуется помещать вызовы данных в файл маршрута. Это позволит выполнить ваш запрос / сохранить и все другие сборы данных до загрузки файла шаблона. На изображенном вами вычисленном свойстве нет зависимых ключей, поэтому это может оправдать перемещение вызовов в файл маршрута для вашего сценария.
универсальный пример route.js:
import Ember from 'ember';
export default Ember.Route.extend({
async model() {
let record;
record = await this.store.queryRecord('record', { queryParams });
if (!record) {
record = this.store.createRecord('record', { properties });
}
return record.save();
},
});
Однако, если обещание в вычисляемом свойстве является полезным, у автора Ember Igniter могут быть некоторые дополнительные полезные рекомендации, которые могут быть полезны. Руководство по обещаниям в области компьютерной недвижимости