Оригинальный ответ от Github:
Мы используем именованные запросы, так как мы используем express-graphql
.Я не верю, что это правильный синтаксис.Кроме того, указанный URL-адрес не работает, я просто получаю сообщение OperationOutcome, в котором говорится, что пациент не существует, что не является правильным ответом GraphQL.
Можете ли вы попробовать изменить свой запрос с:
http://localhost:3000/3_0_1/Questionnaire/jamana/$graphql?query={id}
на это:
http://localhost:3000/3_0_1/Questionnaire/jamana/$graphql?query={Questionnaire{id}}
При написании запроса необходимо указать тип возвращаемого значения как часть запроса экземпляра.Вы должны получить ответ, похожий на этот (если вы внедрили свой преобразователь, у вас будут данные, а не нуль):
{
"data": {
"Questionnaire": {
"id": null
}
}
}
и из более позднего комментария:
Если выстановятся нулевыми, тогда вы делаете это правильно, но вы не написали запрос или не подключили его к источнику данных.Вам все еще нужно вернуть вопросник в распознавателе.
Где вы видите это:
instance: {
name: 'Questionnaire',
path: '/3_0_1/Questionnaire/:id',
query: QuestionnaireInstanceQuery,
},
Вы видите, что конечная точка зарегистрирована с параметром id, который отличается от GraphQLаргумент.Это просто экспресс-аргумент.Если вы перейдете к файлу questionnaire / query.js , вы увидите, что запрос QuestionnaireInstanceQuery имеет другой обработчик, отличный от стандартного QuestionnaireQuery.Поэтому в вашем файле questionnaire / resolver.js , если вы хотите, чтобы и запрос, и запрос экземпляра работали, вам нужно реализовать оба преобразователя.
например
// This is for the standard query
module.exports.getQuestionnaire = function getQuestionnaire(
root,
args,
context = {},
info,
) {
let { server, version, req, res } = context;
// Do query and return questionnaire
return {};
};
// This one is for a questionnaire instance
module.exports.getQuestionnaireInstance = function getQuestionnaireInstance(
root,
args,
context = {},
info,
) {
let { server, version, req, res } = context;
// req.params.id is your questionnaire id, use that for your query here
// queryQuestionnaireById does not exist, it is pseudo code
// you need to query your database here with the id
let questionnaire = queryQuestionnaireById(req.params.id);
// return the correct questionnaire here, default returns {},
// which is why you see null, because no data is returned
return questionnaire;
};