【问题标题】:createList does not pick up relationship in Mirage jscreateList 在 Mirage js 中不拾取关系
【发布时间】:2020-06-18 09:18:24
【问题描述】:

我正在尝试使用 Mirage js createList 工具创建属于用户的多个帖子。我已经创建了具有对应关系的模型:

  models: {
    user: Model.extend({
      posts: hasMany(),
    }),
    post: Model.extend({
      user: belongsTo()
    })
  }

seeds 方法中,我试图创建一个帖子列表并使用以下代码将它们分配给用户:

  seeds(server) {

    let posts = server.createList("post", 2);

    server.create("user", {
      name: "John",
      posts: [posts],
    });

  }

不幸的是,当我在 http 请求中点击 this.get("/users"); 时,我收到一个海市蜃楼错误,我理解但无法修复: Mirage: You're trying to create a user model and you passed in "model:post(1),model:post(2)" under the posts key, but that key is a HasMany relationship. You must pass in a Collection, PolymorphicCollection, array of Models, or null.

据我所知,我正在传递一个模型数组?请问怎么解决?

【问题讨论】:

    标签: javascript ember-cli-mirage miragejs


    【解决方案1】:

    所以问题是:

     posts: [posts]
    

    这部分已经返回一个数组(或集合):

    let posts = server.createList("post", 2);
    

    因此将其包装在另一个数组 [post] 中是不正确的。

    使用server.create("..."),我们可以通过将其放入数组来挂钩它,但server.createList 已经返回了一个数组。

    正确的语法是:

      seeds(server) {
    
        let posts = server.createList("post", 2);
    
        server.create("user", {
          name: "John",
          posts: posts,
        });
    
      }
    

    甚至更短:

      seeds(server) {
    
        let posts = server.createList("post", 2);
    
        server.create("user", {
          name: "John",
          posts,
        });
    
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-25
      • 1970-01-01
      • 1970-01-01
      • 2017-04-05
      • 1970-01-01
      • 1970-01-01
      • 2014-10-29
      相关资源
      最近更新 更多