Как включить «много» часть отношения из модели «один из многих»?

#node.js #express #strongloop

#node.js #выразить #strongloop

Вопрос:

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

 Product.find({include: 'Categories'})
  

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

Я определил это отношение в соответствии с документами loopback, найденными здесь:https://docs.strongloop.com/display/public/LB/HasMany relations. Поскольку в одной категории много продуктов. Это выглядит следующим образом:

category.json

 "relations": {
  "products": {
    "type": "hasMany",
    "model": "Product",
    "foreignKey": "categoryId"
  }
},
  

В products.json ничего не определено. Я, конечно, проверил множественное число, но все они проверяются.

Когда я пытаюсь получить все продукты для всех категорий, это работает без проблем. Я почти уверен, что так и задумано. Но как я должен сделать это наоборот? Я уже пытался определить отношение в продукте как hasOne, задокументированное здесь:https://docs.strongloop.com/display/public/LB/HasOne relations. Но для этого требуется внешний ключ в другом объекте, так что это, очевидно, предназначено только для отношения 1 к 1. В остальном я в некотором замешательстве… Есть идеи?

Ответ №1:

Когда вы включаете это со стороны продукта, вы должны создать это отношение в product.json

Как вы упомянули, продукт принадлежит только к одной категории — это означает, что имя отношения должно быть category.

Думайте об этом как о чем-то вроде, loopback вызовет функцию Product.category

Добавьте следующий фрагмент в product.json

 "relations": {
  "category": {
    "type": "belongsTo",
    "model": "Category",
    "foreignKey": "categoryId"
  }
},
  

Теперь попробуйте —

Product.find({include: 'category'})

Комментарии:

1. Спасибо за помощь! Я полагал, что это должно быть каким-то образом определено в двух направлениях. Теперь я ясно вижу это и в документах, так что теперь я чувствую себя глупо. 🙂