Я использую три таблицы из ассоциативных отношений.Родительские «продукты» имеют идентификатор, который связан с таблицей RefProductOptions.productID.Это прекрасно работает с моими распознавателями, и GraphQL отвечает правильно.
Когда я представляю третью таблицу "productoptions" и пытаюсь добавить слой ассоциации между "refproductoptions.optionId" с "productoptions.id", GraphQLискать не удается.
The GraphQL error message is:
{
"errors": [
{
"message": "refproductoptions.getProductOptions is not a function",
"locations": [
{
"line": 13,
"column": 7
}
],
"path": [
"products",
"refproductoptions",
0,
"productoptions"
],
"extensions": {
"code": "INTERNAL_SERVER_ERROR",
"exception": {
"stacktrace": [
"TypeError: refproductoptions.getProductOptions is not a function",
" at productoptions (/home/bob/graphql-server/src/resolvers.js:35:35)",
" at field.resolve (/home/bob/graphql-server/node_modules/graphql-extensions/dist/index.js:140:26)",
...
Я просмотрел свой код, чтобы убедиться, что я уважаю ссылки и их регистр.
// src/resolvers.js
const resolvers = {
Query: {
async products (root, { name }, { models }) {
let searchCriteria = {where: { name } };
return await models.Products.findOne(searchCriteria);
},
async refproductoptions (root, { productId }, { models }) {
let searchCriteria = {where: { productId } };
//console.log( searchCriteria );
return await models.RefProductOptions.findOne(searchCriteria);
},
async productoptions (root, { id }, { models }) {
let searchCriteria = {where: { id } };
console.log ( searchCriteria );
return await models.ProductOptions.findOne(searchCriteria);
},
},
Products: {
async refproductoptions (products) {
return products.getRefProductOptions()
}
},
RefProductOptions: {
async productoptions (refproductoptions) {
console.log("====================== RefProductOptions");
return refproductoptions.getProductOptions()
}
},
/*
ProductOptions: {
async refproductoptions (productoptions) {
return productoptions.getRefProductOptions()
}
}
*/
}
module.exports = resolvers
Если я выполню этот запрос:
{
products (name: "Test Product") {
name
urlWordRef
seoTitle
seoDescription
standardEquipment
technicalSpecs
refproductoptions {
id
productId
optionId
}
}
}
Я получаю хорошие результаты.Тем не менее, если я добавлю часть запроса по продукту в приведенном ниже запросе, произойдет сбой с отмеченной выше ошибкой.
{
products (name: "test") {
name
urlWordRef
seoTitle
seoDescription
standardEquipment
technicalSpecs
refproductoptions {
id
productId
optionId
productoptions {
name
}
}
}
}
Кроме того, этот запрос также не будет выполнен:
{
refproductoptions(productId: 1) {
id
productId
optionId
productoptions {
name
}
}
}