Подтвердить что ты не робот

Ember.js массив как свойство модели

Ура! У меня есть модель, и один ее атрибут - это массив, но по некоторым причинам (я использую mongoDB на сервере, и это проблема со встроенными моделями и ember-данными), я не могу сделать что-то вроде этого:

App.Foo = DS.Model.extend({
  ...
  numbers: DS.hasMany('App.Bar')
)};

App.Bar = DS.Model.extend({
  ...
  number: DS.attr('number')
});

Мне нужно что-то вроде этого:

App.Bar = DS.Model.extend({
  numbers: DS.attr('array')
});

Но не существует типа массива атрибутов в данных ember-данных, как быть?

4b9b3361

Ответ 1

Я обнаружил, что на самом деле вы можете иметь свойства массива из коробки, просто не указав тип.

#coffeescript

AskuWhiteLabel.SomeModel = DS.Model.extend
    some_ids: DS.attr()

Я использую это, и когда я это делаю

myModel.set('some_ids', [1,2,3])
myModel.save()

Полезная нагрузка на сервер - это действительно мой массив, как есть.

Ответ 2

Для тех, у кого такая же проблема, как и я: ответьте на этот вопрос:

fooobar.com/questions/175076/...

Или вы можете передать встроенные модели с отношением hasMany и установить пользовательский первичный ключ для встроенной модели в адаптер ( "номер" в моем случае). Посмотрите на эти тесты:

https://github.com/emberjs/data/blob/master/packages/ember-data/tests/integration/embedded/embedded_without_ids_test.js

Ответ 3

anArrayAttr: DS.attr('raw', {defaultValue: function() {return [];}})

  • От моего удивительного коллеги 'Theron Humiston'