GraphQL查询返回null。不知道为什么
我在graphQL查询返回null时遇到了一些问题,我不太清楚它为什么返回null。我读过几篇类似于这篇文章的文章,但没有一篇能帮助我明确问题所在 我认为这与我如何传递/获取参数有关,因为我的查询没有参数,但我不确定,因为我在网上找不到任何其他示例 任何帮助都将不胜感激 我正在使用apollo服务器、graphql和使用Knex创建数据库连接的a 我可以提出两个问题GraphQL查询返回null。不知道为什么,graphql,knex.js,sqldatasource,apollo-server,Graphql,Knex.js,Sqldatasource,Apollo Server,我在graphQL查询返回null时遇到了一些问题,我不太清楚它为什么返回null。我读过几篇类似于这篇文章的文章,但没有一篇能帮助我明确问题所在 我认为这与我如何传递/获取参数有关,因为我的查询没有参数,但我不确定,因为我在网上找不到任何其他示例 任何帮助都将不胜感激 我正在使用apollo服务器、graphql和使用Knex创建数据库连接的a 我可以提出两个问题 allParts()-此查询按预期工作,并返回数据库中包含请求的graphQL字段的所有部分 getPart(itemnum)-这
query{
getPart(itemnum: "T|0000000000001"){
desc
}
}
graphQL响应:
"message": "Cannot return null for non-nullable field Part.desc.",
基于Knex调试消息执行的SQL查询:
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ 'T|0000000000001' ],
__knexQueryUid: '3a8234eb-0a5c-46db-ad8e-5508288c9a86',
sql: 'select * from `part` where `itemnum` = ?'
index.js:
const { ApolloServer } = require('apollo-server');
const typeDefs = require('./schema');
const resolvers = require ('./resolvers')
const PartAPI = require ('./datasources/partAPI');
const knexConfig = {
client: "sqlite3",
connection: {
/* CONNECTION INFO */
filename: "./TEAM_material.db3"
},
debug: true
};
const server = new ApolloServer({
typeDefs,
resolvers,
dataSources: () => ({
partAPI: new PartAPI(knexConfig),
}),
introspection: true,
});
server.listen().then(({ url }) => {
console.log(`turns out my schema was incorrect. The getPart query was expecting a Part but instead my query was returning an array of Part.
old Schema
#Queries
type Query {
getPart(itemnum: String!): Part
allParts: [Part!]!
}
`;
const{ApolloServer}=require('apollo-server');
const typeDefs=require('./schema');
常量解析程序=需要(“./解析程序”)
const PartAPI=require('./数据源/PartAPI');
常数knexConfig={
客户端:“sqlite3”,
连接:{
/*连接信息*/
文件名:“./TEAM_material.db3”
},
调试:正确
};
const server=新服务器({
typeDefs,
解析器,
数据源:()=>({
partAPI:新的partAPI(knexConfig),
}),
反省:没错,
});
server.listen().then({url})=>{
log(`发现我的架构不正确。getPart查询需要一个部分,但我的查询返回的是一个部分数组
旧模式
#Queries
type Query {
getPart(itemnum: String!): [Part]!
allParts: [Part!]!
}
`;
新模式