我的ember APP显示后添加意外记录
My ember APP adds unexpected record after displaying
当我单击 post 标题 ('Test post') here 并且当我 return 到 post 的列表时,我有意外的空记录。这是一种奇怪的行为。我有简单的构造:
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 - 对于单个 post
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。
快递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});
});
});
有人可以帮助我吗?
在您的序列化器中,primaryKey
应该是 product_slug
而不是 _id
。 Ember 需要被告知它应该将 slug 视为唯一标识符。您的确切问题在下面的博客 post 中提到...
http://fullstackstanley.com/read/handling-slug-urls-in-ember-and-phoenix
如果您查看 Ember 检查器(也在博客 post 中提到),您会看到您有一条 ID 为 5672f9551615cf0b07e1c3cf
的记录和一条 ID 为 test-post
.
希望对您有所帮助!
当我单击 post 标题 ('Test post') here 并且当我 return 到 post 的列表时,我有意外的空记录。这是一种奇怪的行为。我有简单的构造:
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 - 对于单个 post
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。
快递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});
});
});
有人可以帮助我吗?
在您的序列化器中,primaryKey
应该是 product_slug
而不是 _id
。 Ember 需要被告知它应该将 slug 视为唯一标识符。您的确切问题在下面的博客 post 中提到...
http://fullstackstanley.com/read/handling-slug-urls-in-ember-and-phoenix
如果您查看 Ember 检查器(也在博客 post 中提到),您会看到您有一条 ID 为 5672f9551615cf0b07e1c3cf
的记录和一条 ID 为 test-post
.
希望对您有所帮助!