Я использую Express + Apollo Server + GraphQL + Mongoose + MongoDB для «выполнения» нескольких операций CRUD над базой данных.
Одна из операций, которые я пытаюсь выполнить, - это получить сайты из базы данных и расширить пользователей с их информацией для каждой записи, например:
query {
getSites {
id
name
owner {
name
email
}
origins
}
}
Вместо этого я получаю следующие результаты:
{
"data": {
"getSites": [{
"id": "5cae36182ab9b94e94ba9af5",
"name": "Test site 1",
"owner": [{
"name": null,
"email": null
}
],
"origins": [
"test1",
"test2"
]
}, {
"id": "5cae3a3798c302247c036544",
"name": "Test site 2",
"owner": [{
"name": null,
"email": null
}
],
"origins": [
"test1",
"test2"
]
}
]
}
}
Это мой typeDef код для Site :
import { gql } from 'apollo-server-express';
const site = gql `
extend type Site {
id: ID!
name: String!
origins: [String]
owner: [User]
createdOn: String
updatedOn: String
}
extend type Query {
getSites: [Site]
getSite(id: ID!): Site
}
extend type Mutation {
addSite(name: String!, owner: [String!], origins: [String]): Site
}
`;
export default site;
Если я console.log(sites)
вижу, что владельцем является массив строк.
Редактировать
Если я изменю addSite(name: String!, owner: [User], origins: [String]): Site
, то получу при компиляции:
Ошибка: тип Mutation.addSite (owner :) должен быть тип ввода, но получил: [пользователь]
Мой распознаватель выглядит так:
getSites: async () => await Site.find().exec()
Как правильно определять отношения сегодня? Спасибо.