如何解决GraphQL:TypeError:无法读取未定义的属性
我有一个Apollo GraphQL项目,在其中创建了自己的查询和变异。我已经完成了使用模拟数据的操作,并且Query and Mutation工作正常。但是当我尝试使用Sequelize ORM时,我得到了错误
"TypeError: Cannot read property 'getListings' of undefined"," at listings (/home/ayman/Desktop/apollo-graphql/graphql-app/functions/graphql.js:50:19)"," at field.resolve (/home/ayman/Desktop/apollo-graphql/graphql-app/node_modules/graphql-extensions/dist/index.js:134:26)"
graphql.js
中的查询和变异:
const { ApolloServer,gql} = require("apollo-server-lambda");
const { Listing,User } = require("../db");
const jwt = require("jsonwebtoken");
const typeDefs = gql`
type Query {
listings: [Listing!]!
}
type Mutation {
createListing(input: CreateListingInput!): Listing!
}
input CreateListingInput {
title: String!
description: String
url: String!
notes: String
}
type Contact {
id: ID!
name: String!
company: Company
email: String
notes: String
}
type Company {
id: ID!
name: String!
logo: String
listings: [Listing!]!
url: String
}
type Listing {
id: ID!
title: String!
description: String
url: String!
notes: String
company: Company
contacts: [Contact!]!
}
`;
const resolvers = {
Query: {
listings(_,__,{ user }) {
return user.getListings();
},},Mutation: {
createListing(_,{ input },{ user }) {
return Listing.create({ ...input,userId: user.id });
},};
const server = new ApolloServer({
typeDefs,resolvers,});
exports.handler = server.createHandler();
我将Sequilize和Postgres数据库一起使用:
db.js
const Sequelize = require("sequelize");
const sequelize = new Sequelize(process.env.DB_CONNECTION_STRING,{
dialect: "pg",dialectModule: require('pg'),dialectOptions: {
ssl: true,});
class User extends Sequelize.Model {}
User.init(
{
email: Sequelize.STRING,password: Sequelize.STRING,{
sequelize,modelName: "user",}
);
class Listing extends Sequelize.Model {}
Listing.init(
{
title: Sequelize.STRING,description: Sequelize.TEXT,url: Sequelize.STRING,notes: Sequelize.TEXT,modelName: "listing",}
);
Listing.belongsTo(User);
User.hasMany(Listing);
exports.sequelize = sequelize;
exports.User = User;
exports.Listing = Listing;
-
使用
运行netlify dev
-
转到URL:http:// localhost:8888 / .netlify / functions / graphql
-
示例GraphQL查询
{
listings {
id
title
description
url
company {
name
url
}
}
}
解决方法
return user.getListings();
您可能是指用户,因为用户未定义
,我知道,您正在尝试从上下文访问用户对象。请检查上下文定义。它应该返回一个明确包含用户对象的对象。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。