Adonis JS - пользовательский метод Access Model - PullRequest
1 голос
/ 19 февраля 2020

Я добавил в модель собственный метод с именем customMethod, например:

class Prize extends Model {

  customMethod(){

    return 'test'

  }

}

Когда я использую поиск для получения приза по первичному ключу, я могу назвать этот метод без проблем

    const prize = await Prize.find(1);

    return prize.customMethod();
    //returns 'test'

но когда я получу приз другим способом, через отношения или запрос по полю, я не смогу получить доступ к этому методу.

   const countrysPrizes = await country.prizes().fetch();

    for (const key in countrysPrizes) {
      if (countrysPrizes.hasOwnProperty(key)) {
        const prize = countrysPrizes[key];

        return prize.customMethod();
        //returns 500 - prize.customMethod is not a function
      }
    }

Как я могу получить к нему доступ? метод во время итерации по нескольким объектам?

1 Ответ

1 голос
/ 19 февраля 2020

Вам необходимо использовать <fetched_object>.rows из-за VanillaSerializer

Пример кода:

  const user = await User.find(1);
  const posts = await user.posts().fetch();

  posts.rows.forEach(post=> { // use .rows
    console.info(post.customMethod()); // Your custom method
  });

У меня возникли проблемы с использованием баз c foreach l oop. Поэтому я использовал .foreach()

Пример вывода с fetch():

AdonisJS VanillaSerializer - Output example

...