当我点击帖子标题('测试帖子')here时,当我返回帖子列表时,我有意外的空记录。这是一种奇怪的行为。我的结构很简单:
Ember模特(post.js):
import DS from 'ember-data';
export default DS.Model.extend({
title: DS.attr('string'),
slug: DS.attr('string'),
intro: DS.attr('string'),
body: DS.attr('string'),
created_at: DS.attr('date'),
updatedAt: DS.attr('date')
});
Ember路线:
this.route('posts', {path: 'blog'}, function() {
this.route('post', {path: '/:post_slug'});
});
index.js - 列表
import Ember from 'ember';
export default Ember.Route.extend({
model() {
var posts = this.store.findAll('post');
return posts;
}
});
post.js - 单一帖子
import Ember from 'ember';
export default Ember.Route.extend({
model(params) {
return this.store.findRecord('post', params.post_slug);
}
});
Ember序列化器:
import DS from 'ember-data';
export default DS.RESTSerializer.extend({
primaryKey: '_id',
serializeId: function(id) {
return id.toString();
},
extractCreateRecord: function() {
// do nothing
}
});
我使用RESTAdapter。
Express API:
app.get('/api/posts', function(req, res, next) {
Posts.find(function(err, response) {
posts = response;
res.json({posts: posts});
});
});
app.get('/api/posts/:url', function(req, res) {
Posts.findOne({slug:req.params.url},function(err, response){
post = response;
res.json({post: post});
});
});
任何人都可以帮助我?
答案 0 :(得分:0)
在序列化程序中,primaryKey
应为product_slug
而不是_id
。需要告诉Ember它应该将slug视为唯一标识符。您在下面的博客文章中提到了您的确切问题...
http://fullstackstanley.com/read/handling-slug-urls-in-ember-and-phoenix
如果您查看Ember检查员(也在博客文章中提到),您会看到一条ID为5672f9551615cf0b07e1c3cf
的记录,另一条记录为test-post
。
希望有所帮助!