У меня проблема с изготовлением hasMany < => принадлежит отношению к работе.Вам необходимо сдать модель в модель магазинаДля метода
У меня есть articles/show
вид, когда я пытаюсь перечислить комментарии к статье, но я продолжаю получать ошибку, указанную в заголовке.
Это что-то с ownTo: DS.belongsTo('article')
, но я не мог понять, что это.
Вот мои файлы.
маршруты/статьи/show.js
import Ember from 'ember';
import RSVP from 'rsvp';
export default Ember.Route.extend({
model(params) {
return RSVP.hash({
article: this.store.find("article", params.id),
comments: this.store.query('comment', { articleId: params.id })
});
}
});
контроллеры/статьи/show.js
import Ember from 'ember';
const { computed: { alias, readOnly } } = Ember;
export default Ember.Controller.extend({
article: alias('model.article'),
comments: alias('model.comments'),
length: readOnly('comments.length')
});
шаблоны/статьи/show.hbs
<h3>Comments ({{comments.length}})</h3>
{{#each comments as |comment|}}
<p>Author: {{comment.user.name}}</p>
<p>Somebody said: {{comment.body}}</p>
{{/each}}
адаптеры/comment.js
import ApplicationAdapter from './application';
export default ApplicationAdapter.extend({});
сериализаторы/comment.js
import DS from 'ember-data';
export default DS.RESTSerializer.extend({
attrs: {
user: { embedded: 'always' },
article: { embedded: 'always' }
}
});
сериализаторы/article.js
импорта DS от 'Ember-данных';
export default DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
attrs: {
comments: { embedded: 'always' }
}
});
модели/article.js
import DS from 'ember-data';
import Ember from 'ember';
const { attr, hasMany } = DS;
const { computed: { gt } } = Ember;
export default DS.Model.extend({
title: attr('string'),
content: attr('string'),
authorName: attr('string'),
authorAvatar: attr('string'),
authorUrl: attr('string'),
comments: hasMany('comment', {async: true}),
hasAvatar: gt('authorAvatar.length', 0)
});
Edit:
Я добавил сюда код комментария модели, как просили в комментариях.
модели/comment.js
import DS from 'ember-data';
const { belongsTo, attr } = DS;
export default DS.Model.extend({
article: belongsTo(),
user: belongsTo(),
body: attr('string')
});
А вот StackTrace от инспектора:
ember.debug.js:16905 Assertion Failed: You need to pass a model name to the store's modelFor method
Error
at assert (http://ffl.com:8000/assets/vendor.js:16268:13)
at Object.assert (http://ffl.com:8000/assets/vendor.js:27196:34)
at assert (http://ffl.com:8000/assets/vendor.js:135212:37)
at Class.modelFor (http://ffl.com:8000/assets/vendor.js:145201:41)
at Class._internalModelForId (http://ffl.com:8000/assets/vendor.js:144337:29)
at Class._pushResourceIdentifier (http://ffl.com:8000/assets/vendor.js:145716:19)
at BelongsToRelationship.updateData (http://ffl.com:8000/assets/vendor.js:142394:36)
at BelongsToRelationship.push (http://ffl.com:8000/assets/vendor.js:142976:14)
at http://ffl.com:8000/assets/vendor.js:145795:20
at http://ffl.com:8000/assets/vendor.js:141943:18
defaultDispatch @ ember.debug.js:16905
dispatchError @ ember.debug.js:16888
onerrorDefault @ ember.debug.js:30389
trigger @ ember.debug.js:57833
(anonymous) @ ember.debug.js:58717
invoke @ ember.debug.js:339
flush @ ember.debug.js:407
flush @ ember.debug.js:531
end @ ember.debug.js:601
run @ ember.debug.js:724
join @ ember.debug.js:746
run.join @ ember.debug.js:21556
hash.success @ rest.js:954
fire @ jquery.js:3305
fireWith @ jquery.js:3435
done @ jquery.js:9242
(anonymous) @ jquery.js:9484
У вас есть код, который вызывает метод 'modelFor' с пустыми аргументами?. Вы определили модель комментариев?если так, то это тоже?. если возможно, откройте трассировку стека для этой ошибки утверждения. для определения того, какой метод запускает 'modelFor'. последняя версия 'find' является закрытым методом. – kumkanillam
@kumkanillam Я добавил оба, как вы просили. Надеюсь, что это поможет. –
Не нужно ли указывать имя модели в отношениях belongsTo, например 'article: belongsTo ('article')' и 'user: attribTo ('user')' для модели комментариев. Я не уверен в этом. если это вам не поможет, вам может понадобиться пройти через формат данных ответа сервера. – kumkanillam