#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. Спасибо за помощь! Я полагал, что это должно быть каким-то образом определено в двух направлениях. Теперь я ясно вижу это и в документах, так что теперь я чувствую себя глупо. 🙂