问题描述
我有一个mongoose
,graphql
和graphql-compose-mongoose
的后端。
我遵循graphql-compose-mongoose
documentation来创建用户模型和架构,如下所示:
型号
import mongoose,{ Schema } from 'mongoose';
import { composeMongoose } from 'graphql-compose-mongoose';
export const UserSchema = new Schema({
phone: { type: String },name: { type: String },email: { type: String,required: true },password: { type: String,photos: { type: Array },matchId: { type: Schema.Types.ObjectId },created: { type: Date,default: Date.Now },active: { type: Boolean,default: false }
});
export const User = mongoose.model('User',UserSchema);
export const UserTC = composeMongoose(User);
Graphql模式
import { User,UserTC } from '../models/User';
import { schemaComposer } from 'graphql-compose';
schemaComposer.Query.addFields({
userById: UserTC.mongooseResolvers.findById(),userByIds: UserTC.mongooseResolvers.findByIds(),userOne: UserTC.mongooseResolvers.findOne(),userMany: UserTC.mongooseResolvers.findMany(),userDataLoader: UserTC.mongooseResolvers.DataLoader(),userDataLoaderMany: UserTC.mongooseResolvers.DataLoaderMany(),userCount: UserTC.mongooseResolvers.count(),userConnection: UserTC.mongooseResolvers.connection(),userPagination: UserTC.mongooseResolvers.pagination()
});
schemaComposer.Mutation.addFields({
userCreateOne: UserTC.mongooseResolvers.createOne(),userCreateMany: UserTC.mongooseResolvers.createMany(),userUpdateById: UserTC.mongooseResolvers.updateById(),userUpdateOne: UserTC.mongooseResolvers.updateOne(),userUpdateMany: UserTC.mongooseResolvers.updateMany(),userRemoveById: UserTC.mongooseResolvers.removeById(),userRemoveOne: UserTC.mongooseResolvers.removeOne(),userRemoveMany: UserTC.mongooseResolvers.removeMany()
});
const graphqlSchema = schemaComposer.buildSchema();
export default graphqlSchema;
我想创建一个具有userCreateOne
突变的用户,并且正在GraphQL游乐场中对其进行尝试。我似乎不知道如何。我尝试过将字段作为参数传递,但是它不起作用。
解决方法
我最终弄清楚了。突变看起来像这样:
mutation {
userCreateOne(record: {email: "email@example.com",password: "12345"}) {
record {
email
password
matchId
created
active
}
}
}
userCreateOne
(和猫鼬解析器createOne
)接受对象record
,并且在该对象内部是您在架构中定义的字段。