我对整个Ember事情都很陌生,而且我真的很想获得更多真实场景的示例代码。我已经看过关于身份验证的Embercast,这很有帮助,但我正在尝试创建一个应用程序,其中包含各个用户拥有的帖子列表,其他用户可以将其添加到他们的收藏夹中。
对我目前的水平而言,这是雄心勃勃的,当然,但我希望有人能够指出我的例子,甚至创造一个。我认为像这样的东西对于其他人来说是一个很好的资源 - 比Ember指南中的Todo列表示例更多,这真的不足以展示我如何创建一个真正的应用程序。我认为我们需要更多的身份验证示例。
到目前为止,这是我的模型和装置:
App.User = DS.Model.extend({
name: DS.attr('string'),
email: DS.attr('string'),
posts: DS.hasMany('post'),
favourites: DS.hasMany('favourite')
});
App.User.FIXTURES = [{
id: 1,
name: 'Bob Jones',
email: 'bob@jones.com',
favourites: [2]
}];
App.Post = DS.Model.extend({
date_posted: DS.attr('date'),
title: DS.attr('string'),
description: DS.attr('description'),
comments: DS.hasMany('comment'),
});
App.Post.FIXTURES = [{
id: 1,
date_posted: new Date,
title: 'Red',
description: 'Great colour'
comments: []
}, {
id: 2,
date_posted: new Date,
title: 'Blue',
description: 'Makes me sad',
comments: [1]
}];
App.Comment = DS.Model.extend({
post: DS.belongsTo('post'),
date_posted: DS.attr('date'),
author: DS.attr('string'),
message: DS.attr('string'),
});
App.Comment.FIXTURES = [{
id: 1,
post: [2],
date_posted: new Date,
author: 'Aaron',
message: 'I agree with the description.'
}];
App.Favourite = DS.Model.extend({
user: DS.belongsTo('user'),
post: DS.belongsTo('post')
});
App.Favourite.FIXTURES = [{
user: 1,
post: 2
}];
我觉得这很容易,我甚至没有100%确信这些都是正确的。
感谢您提供任何指导!
答案 0 :(得分:0)
这里有几个问题。首先你使用的是夹具,所以你应该使用FixtureAdapter。由于您在fixture数据中定义了关系,但数据只有id,因此您需要将这些关系标记为异步。此外,在您的用户夹具中,它有一个最喜欢的ID 2,但您最喜欢的灯具没有ID。
App.User = DS.Model.extend({
name: DS.attr('string'),
email: DS.attr('string'),
posts: DS.hasMany('post', {async:true}),
favourites: DS.hasMany('favourite', {async:true})
});
App.User.FIXTURES = [{
id: 1,
name: 'Bob Jones',
email: 'bob@jones.com',
favourites: [2],
// you have no posts defined here??
}];
App.Post = DS.Model.extend({
date_posted: DS.attr('date'),
title: DS.attr('string'),
description: DS.attr('description'),
comments: DS.hasMany('comment', {async:true}),
});
App.Post.FIXTURES = [{
id: 1,
date_posted: new Date,
title: 'Red',
description: 'Great colour', // also missing this comma
comments: []
}, {
id: 2,
date_posted: new Date,
title: 'Blue',
description: 'Makes me sad',
comments: [1]
}];
App.Comment = DS.Model.extend({
post: DS.belongsTo('post', {async:true}),
date_posted: DS.attr('date'),
author: DS.attr('string'),
message: DS.attr('string'),
});
App.Comment.FIXTURES = [{
id: 1,
post: [2],
date_posted: new Date,
author: 'Aaron',
message: 'I agree with the description.'
}];
App.Favourite = DS.Model.extend({
user: DS.belongsTo('user', {async:true}),
post: DS.belongsTo('post', {async:true})
});
App.Favourite.FIXTURES = [{
id: 2, // it needs some sort of unique identifier
user: 1,
post: 2
}];
此外,您可能需要阅读Ember数据转换文档,该文档可能对您的一些问题有所帮助,https://github.com/emberjs/data/blob/master/TRANSITION.md
制作的一个小例子