Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GraphQL查询返回null。不知道为什么_Graphql_Knex.js_Sqldatasource_Apollo Server - Fatal编程技术网

GraphQL查询返回null。不知道为什么

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)-这

我在graphQL查询返回null时遇到了一些问题,我不太清楚它为什么返回null。我读过几篇类似于这篇文章的文章,但没有一篇能帮助我明确问题所在

我认为这与我如何传递/获取参数有关,因为我的查询没有参数,但我不确定,因为我在网上找不到任何其他示例

任何帮助都将不胜感激

我正在使用apollo服务器、graphql和使用Knex创建数据库连接的a

我可以提出两个问题

  • allParts()-此查询按预期工作,并返回数据库中包含请求的graphQL字段的所有部分
  • getPart(itemnum)-这是当前不起作用的查询
  • graphQL查询:

    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!]!
        }
    `;
    
    新模式