如何将子记录添加到现有父记录中?

2024-05-05

我一直在 Google 和 Stack Overflow 上搜索有关这个主题的某种提示,但信息充其量是分散的。

我正在尝试创建一个新的子记录(Comment)并将其保存到现有的父记录(Post)。我使用的是 Ember-Model,而不是 Ember-Data,但任何提示或指示将不胜感激。

目前,我已经成功创建了一个新的嵌入式Comment but only当它被创建时new Post记录。所以:

我如何加载/检索当前加载的Post(家长记录)以便申请Comments(子记)要吗?

我一直在阅读控制器依赖项,使用needs: and this.controllerFor and this.modelFor为了能够访问另一个控制器/模型的content但无法将这些东西连接成有意义的东西。

不管怎样,这就是我将应用程序代码缩减到的内容,希望我能够偶然发现执行此操作的正确方法......

Routes

    App.Router.map(function() {
      this.resource('post', { path: '/:post_id' }, function() {
        this.resource('comments', { path: '/comments'} );
        });
    });

我删除了所有其他资源和路线,所以我留下了App.Post, App.PostIndex, and App.Comments。我认为我的路线是这里的问题,我假设我没有正确实现使用加载的方法Post记录在我的Comments route.

    App.IndexRoute = Ember.Route.extend({
      model: function() {
        return App.Post.find();
      },

      setupController: function(controller, model) {  // I'm not certain if this
        controller.set('content', model);           // setupController is needed?
      }

    });

    App.PostRoute = Ember.Route.extend({
      model: function(params) {
        return App.Post.find(params.post_id);
      },

      setupcontroller: function( controller, model) { // again, unsure if this
          this.controllerFor('post').get('comments'); // is correct.
            controller.set('content', comments);
      }

    });

    App.CommentsRoute = Ember.Route.extend({
      afterModel: function() {
          this.set('post', this.modelFor('post'));
        },

      setupcontroller: function( controller, model) {
          this.controllerFor('post').get('comments');
            controller.set('content', comments);
        }

    });

控制器

App.CommentsController = Ember.ArrayController.extend({
  needs: "post",

  actions: {

     addComment: function() {
          var post = App.Post.create({
            title: 'static post title'
          });

              post.get('comments').create({
                message: 'static message'
            });

              post.save();

      }

  }

});

这是我当前的评论控制器,它可以创建一个新的Post带有嵌入式Comment。我发现并得到了许多创建Comment,但似乎没有一个对我有用。基本上,我正在努力定义var post = ...作为当前加载的记录。我已经实施了各种方法来尝试试错。到目前为止我已经尝试过:

  • var post = App.Post.create();,返回属性未定义,因为这将创建一个新记录。然而,我尝试了一下,因为我看到的每个与此相关的例子都定义了他们的记录。

  • var post = this.get('post');,返回无法在未定义时调用“get”。我尝试过使用这种方法来定义我当前的帖子Comments控制器和Post控制器。

  • var post = this.get('controllers.post.content);,从我正在使用的后端返回“循环错误”。

  • var post = App.Post.find();,返回无法在未定义时调用“get”。

  • var post = App.Post.find(1);,再次返回一个无法调用“get”的未定义。我想我会尝试一下,因为这是人们提供的反复出现的例子之一。我使用的后端将其自己的 ID 应用于每条记录,我不确定是否能够/如何拥有.find()方法使用动态 ID 值并仅检索我刚刚加载的模型。

我猜我没有正确设置我的路由和控制器依赖项?

如果有人有建议、相关链接或修复,我将非常感激。

这个(看似简单的)问题/用例让我此时束手无策。


试试这个(在 beta 2 之前有效):

App.CommentsController = Ember.ArrayController.extend({
  actions: {
     addComment: function() {
        this.content.createRecord({
            message: 'static message'
        });   
     }
  }
});

Ember Data Beta 2 及更高版本:

App.CommentsController = Ember.ArrayController.extend({
  needs: ["post"],
  actions: {
     addComment: function() {
        var post = this.get('controllers.post');
        var comment = this.get('store').createRecord('comment', {
            message: 'static message',
            post: post
        }); 
        comment.save().then(function() {
            post.addObject(comment);
            // You may or may not need to save your post, too. In my case my backend handles 
            // the inverses of relationships (if existing), so there's no need. We still need 
            // to do this for Ember, though

        });      
     }
  }
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将子记录添加到现有父记录中? 的相关文章

随机推荐

  • 获取 BLOB 的二进制内容

    我知道 为了将 BLOB 对象转换为 Javascript 中的可读格式 URL 我应该使用 createObjectURL 方法 对吧 例子 var blob new Blob Example type text plain url wi
  • TestCafe - 浏览器在测试之间总是以干净的状态启动。如何覆盖它以便浏览器记住缓存、用户设置和存储

    测试之间的浏览器始终以干净的状态打开 登录在我的应用程序中被记住 因为身份验证仍然存在 但由于浏览器始终以干净的状态打开 我必须在所有夹具的 Before 挂钩中执行登录 有什么方法可以打开浏览器以便记住用户设置 缓存 本地和会话存储吗 T
  • 从 pandas 数据帧创建 BigQuery 表,无需显式指定架构

    我有一个 pandas 数据框 想从中创建一个 BigQuery 表 我知道有很多帖子询问这个问题 但到目前为止我能找到的所有答案都需要明确指定每列的架构 例如 from google cloud import bigquery as bq
  • Prisma 1 到 2 迁移问题:P4001 内省数据库为空

    因此 我一直在尝试在现有数据库上运行内省过程 如下所示 npx prisma introspect 并收到以下错误跟踪 0 info it worked if it ends with ok 1 verbose cli C Program
  • 无法在 Android MediaRecorder 中设置手动视频大小

    我正在Android中使用MediaRecorder来录制视频 我当前的参数是 mMediaRecorder setAudioSource MediaRecorder AudioSource DEFAULT mMediaRecorder s
  • 在 unnest_wider 之后命名提升向量中的列

    在使用 tidyr 1 0 的一些新功能时 我遇到了一些令人头疼的问题 我用过boxplot stats获取我想用来绘制的箱线图值向量 我已经成功地完成了此操作 但我相信有更好的方法来命名新的未嵌套向量的列 这是当前设置 library t
  • 重复符号_OBJC_CLASS_$_LoginController

    我知道这个问题以前已经被问过很多次了 但到目前为止还没有解决我的问题 我知道当您在项目中获得文件的多个副本时 会发生此错误 我尝试清理构建 删除任何登录控制器 m文件输入编译源然后构建 很好 没有错误 当我在编译源中添加 LoginCont
  • 控制台界面教程和提示 (pdcurses)

    我正在寻找有关使用 PDCurses 库的教程 不幸的是 只有文本文档 这更像是函数参考 pdcurses 是否与 ncurses 足够相似以使用 ncurses 教程 关于制作控制台 UI 的任何提示 附言 PDCurses mingw3
  • Vagrant - Homestead 设置多个站点

    我已经使用 homestead yaml 映射了文件夹等 ip 192 168 10 10 folders map Users User Desktop folder Homestead First to home vagrant Firs
  • 使用EF Core调用存储过程并关闭连接

    我有一个使用 EF Core 的 ASP NET Core 2 2 应用程序 我有一个服务类 通常使用DbContext用于任何 CRUD 操作 然而 在其中一种方法中 Assign下面的方法 我需要使用存储过程 所以我使用以下代码 注意D
  • 在重复键上仅更新 Null 或空值

    我有一个 mysql 查询来合并主键 IMO 上的两个表 查询工作正常 但我遇到的问题是在重复键更新时 我只想更新 wp second 表的那些没有值的字段 简而言之 在重复键上 wp second 值仅应在 null 或空时更新 这是我到
  • polyfit numpy 的反向输出

    我使用了 numpy 的 polyfit 并获得了两个数组 x 和 y 的非常好的拟合 使用七阶多项式 我的关系是这样的 y x p 0 x 7 p 1 x 6 p 2 x 5 p 3 x 4 p 4 x 3 p 5 x 2 p 6 x 1
  • UCM 中的复合基线是什么以及何时使用它?

    UCM 中的综合基线是什么 什么时候会用到 主要是当我们有多个组件的时候才会使用它吗 关于 复合基线 的参考文献是 在 UCM 中使用复合基线的最佳实践 http www ibm com developerworks rational li
  • 在 pandas dataframe python 列中搜索单词

    我有两个文本列 我想查找一列中的单词是否存在于另一列中 我编写了下面的代码 它运行得很好 但它会检测字符串中的任何位置是否存在单词 例如 它将在 ham 中查找 ha 我想改用正则表达式 但我被困住了 我遇到了这个post https st
  • bash 用变量值替换字符串中的变量名

    这有点奇怪 我有以下字符串 我有一个名为 REDIRECT 的变量设置为 https working MYDOMAIN blah blah 我需要将 MYDOMAIN 替换为分配给 MYDOMAIN 的变量的实际值 不确定 bash 还是
  • Java机器学习库可以商用吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有谁知道我可以将其用于商业产品的优秀 Java 机器学习库吗 不幸的是 Weka 和 Rapidmin
  • 验证远程图像实际上是 ruby​​ 中的图像文件?

    我试图弄清楚如何验证我输入载波的内容实际上是图像 我获取图像网址的来源并没有返回所有实时网址 有些图像已不复存在 不幸的是 它并没有真正返回正确的状态代码或任何内容 因为我正在使用一些代码来检查远程文件是否存在并且它通过了该检查 因此 现在
  • 使用 Apache Batik 将 SVG 图像转换为 JPEG 图像

    我正在尝试将 SVG 图像转换为 JPEG 如下所示https xmlgraphics apache org batik using transcoder html createImage https xmlgraphics apache
  • res.redirect 不会重定向 Node/Express.js

    我正在为我的 web 应用程序使用 Express 并检查会话中是否存在某些值 将用户重定向到 Instagram 登录页面 但在控制台中我不断收到 302 代码 并且浏览器不会重定向用户 这是我的代码 我正在使用 Ajax 发送我的请求
  • 如何将子记录添加到现有父记录中?

    我一直在 Google 和 Stack Overflow 上搜索有关这个主题的某种提示 但信息充其量是分散的 我正在尝试创建一个新的子记录 Comment 并将其保存到现有的父记录 Post 我使用的是 Ember Model 而不是 Em