У меня проблемы с выяснением, почему объект, чье свойство вызывается, не определен. Я использую graphql, apollo-server и следующий тип источника данных https://github.com/cvburgess/SQLDataSource.
Я искал несколько сообщений, но ничего не нашел, помогло.
Я знаю, что это связано с чем-то, что передается неправильно. Я просто не понимаю, почему это не передается правильно.
resolvers. js
const resolvers = {
Query: {
//getPart: (_,{itemnum},{dataSources}) => dataSources.partAPI.getPart({itemnum: itemnum}),
allParts: (_,__,{dataSources}) => dataSources.partAPI.getAllParts(),
},
};
module.exports = resolvers
и вот остальная часть моего кода
Index. js
const { ApolloServer } = require('apollo-server');
const typeDefs = require('./schema');
const resolvers = require ('./resolvers')
const PartAPI = require ('./datasources/part');
const knexConfig = {
client: "sqlite3",
connection: {
/* CONNECTION INFO */
filename: "./TEAM_material.db3"
}
};
const db = new PartAPI(knexConfig);
const server = new ApolloServer({
typeDefs,
resolvers,
dataSources: () => ({db}),
introspection: true,
});
server.listen().then(({ url }) => {
console.log(`? Server ready at ${url}`);
});
Схема. js
const { gql } = require('apollo-server')
const typeDefs = gql`
#Types
type Part {
itemnum: String!
desc: String!
vendor: String!
manuf: String!
venlist: Float!
price: Float!
teamlist: Float!
teamsell: Float!
unitypart: String!
pkgqty: Int!
ioType: String!
preferred: Boolean!
filterlvl1: String!
filterlvl2: String!
filterlvl3: String!
filterlvl4: String!
ipwiretype: String!
opwiretype: String!
obsolete: Boolean!
}
#Queries
type Query {
getPart(itemnum: String!): Part
allParts: [Part!]!
}
`;
module.exports = typeDefs
часть. js
const { SQLDataSource } = require("datasource-sql");
const MINUTE = 60;
class PartAPI extends SQLDataSource {
async getPart({itemnum}){
return this.knex.select("*").from("part").where('itemnum', itemnum).cache(60);
}
async getAllParts(){
return this.knex.select("*").from("part").cache(MINUTE);
}
}
module.exports = PartAPI;