Ember.js - 错误 - "断言失败:你必须在传递给`push`的哈希中包含一个`id`"

 江自流 发布于 2023-02-07 13:41

我通过使用Express编写的REST API将帖子(标题,文本)保存到mongodb数据库并刷新浏览器后出现此错误.我已经将主键设置为'_id',并且已经阅读了有关可能正常化数据的内容?

这是服务器的有效负载(db中只有1个帖子):

{
  "posts": [
  {
    "title": "The Title",
    "text": "Lorem ipsum",
    "_id": "52c22892381e452d1d000010",
    "__v": 0
   }
  ]
}

控制器:

App.PostsController = Ember.ArrayController.extend({
    actions: {
      createPost: function() {
        // Dummy content for now
        var to_post = this.store.createRecord('post', {
          title: 'The Title',
          text: 'Lorem ipsum'
        });
        to_post.save();
      }
    } 
 });

该模型:

App.Post = DS.Model.extend({
   title: DS.attr('string'),
   text: DS.attr('string')
});

串行:

App.MySerializer = DS.RESTSerializer.extend({
  primaryKey: function(type){
    return '_id';
  }
});

适配器:

App.ApplicationAdapter = DS.RESTAdapter.extend({
  namespace: 'api'
});

任何帮助深表感谢!如果您需要任何其他信息,请告诉我.谢谢

1 个回答
  • 使用自定义适配器/序列化器时,命名很重要.如果您希望它应用于整个应用程序,则应调用它ApplicationSerializer

    App.ApplicationSerializer = DS.RESTSerializer.extend({
      primaryKey: '_id'
    });
    

    适配器:

    App.ApplicationAdapter = DS.RESTAdapter.extend({
      namespace: 'api'
    });
    

    如果您只想将它​​应用于单个模型(这也适用于适配器)

    App.PostSerializer = DS.RESTSerializer.extend({
      primaryKey: '_id'
    });
    

    2023-02-07 13:44 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有