createList не определяет отношения в Mirage js

Я пытаюсь создать несколько сообщений, принадлежащих пользователю, с помощью средства 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],
    });

  }

К сожалению, когда я ударил this.get("/users"); в http-запросе появляется ошибка миража, которую я понимаю, но не могу исправить: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.

Насколько я могу судить, я передаю массив моделей? Как я могу это исправить, пожалуйста?

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,
    });

  }
Другие вопросы по тегам