【发布时间】:2021-11-18 13:44:53
【问题描述】:
我想使用 express-graphql 和 mongoose 包在数据库中记录一个表。表中的一个字段本身包含许多字段。如果您花时间看一看,我将不胜感激。我遇到了嵌套 json 数据的问题。
Graphql 语法
我的文件。
用户模型文件。类型文件,变异文件
用户模型:
const mongoose = require("mongoose");
const userSchema = new mongoose.Schema(
{
userName: {
type: String,
required: true,
},
userLastname: {
type: String,
required: true,
},
userEmail: {
type: String,
required: true,
},
userPassword: {
type: String,
required: true,
},
userFirebaseToken: {
type: String,
},
userActive: {
type: String,
},
userImage: {
type: String,
},
userDetail: {
userTitle: {type:String},
userCity: {type:String},
}
},
{ timestamps: true }
);
module.exports = mongoose.model("user", userSchema);
键入文件
const {
GraphQLObjectType,
GraphQLString,
GraphQLID,
GraphQLList,
} = require("graphql");
const { User } = require("../models");
const UserDetailType = new GraphQLObjectType({
name: "UserDetail",
description: "UserDetail Type",
fields: () => ({
userTitle: { type: GraphQLString },
userCity: { type: GraphQLString },
}),
});
const UserType = new GraphQLObjectType({
name: "User",
description: "User Type",
fields: () => ({
id: { type: GraphQLID },
userName: { type: GraphQLString },
userLastname: { type: GraphQLString },
userEmail: { type: GraphQLString },
userPassword: { type: GraphQLString },
userFirebaseToken: { type: GraphQLString },
userActive: { type: GraphQLString },
userImage: { type: GraphQLString },
UserDetail: {
type:UserDetailType
}
}),
});
module.exports = { UserType,UserDetailType };
变异文件
const { GraphQLString, GraphQLList } = require("graphql");
//const {createJwtToken} = require("../util/auth")
const { UserType,userDetailType } = require("./types");
const { User } = require("../models");
const register = {
type: UserType,
args: {
userName: { type: GraphQLString },
userLastname: { type: GraphQLString },
userEmail: { type: GraphQLString },
userPassword: { type: GraphQLString },
userFirebaseToken: { type: GraphQLString },
userActive: { type: GraphQLString },
userImage: { type: GraphQLString },
userDetail:
{
userTitle: { type: GraphQLString },
userCity: { type: GraphQLString },
}
},
async resolve(parent, args) {
const {
userName,
userLastname,
userEmail,
userPassword,
userFirebaseToken,
userActive,
userImage,
userDetail: {
userTitle,
userCity
}
} = args;
const user = new User({
userName,
userLastname,
userEmail,
userPassword,
userFirebaseToken,
userActive,
userImage,
userDetail: {
userTitle,
userCity
}
});
const result = await user.save();
console.log(result);
return result;
},
};
module.exports = { register };
架构文件
// import Graphql
const {GraphQLSchema,GraphQLObjectType} =require("graphql");
// import Queries
const { users } =require("./queries")
// import Mutations
const { register } =require("./mutations")
// import QueryType
const QueryType =new GraphQLObjectType({
name:"QueryType",
description:"Queries",
fields:{ users }
});
// define MutationType
const MutationType =new GraphQLObjectType({
name:"MutationType",
description:"Mutations",
fields:{ register }
});
module.exports = new GraphQLSchema({
query: QueryType,
mutation: MutationType
});
【问题讨论】:
-
我哪里出错了?如果你能帮助我,我会很高兴。