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