我的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.

希望对您有所帮助!