Ich habe versucht, Beispiel wie möglich zu vereinfachen, also wenn zusätzliche Informationen benötigt, könnte ich es bereitstellen. Lassen Sie uns sagen, dass wir einfach Schema mit embed GraphQLObjectType haben:GraphQL und Mongoose überschreiben Eigenschaft auf Null mit nicht übergebenem Argument in der Mutation
const nameType = new GraphQLObjectType({
name: 'NameType',
fields: {
first: new GraphQLNonNull(GraphQLString),
last: GraphQLString,
},
});
const userType = new GraphQLObjectType({
name: 'User',
fields:() => ({
id: new GraphQLNonNull(GraphQLID),
name: new GraphQLNonNull(nameType),
email: new GraphQLNonNull(GraphQLString),
}),
});
So habe ich Namen mit Immobilien hier erste und letzte. Für die Aktualisierung habe ich die Mutation wie folgt geschrieben. Es gibt GraphQLInputObjectType als NameType.
const nameType = new GraphQLInputObjectType({
name: 'NameInput',
fields: {
first: new GraphQLNonNull(GraphQLString),
last: GraphQLString,
},
});
const updateUser = {
name: 'UpdateUser',
type: userType,
args: {
id: new GraphQLNonNull(GraphQLID),
name: nameType,
email: GraphQLString,
},
resolve: (_, args, context) => User.findOneAndUpdate({ _id: args.id }, args, { new: true })
};
Also, wenn ich jede Mutation mit name: {first: "Foo"}
Eigenschaft bin vorbei last
immer überschreibt mit null
Wert. Ich bin gezwungen, den vorherigen Vornamen und den neuen Nachnamen zu übergeben, wenn ich den Nachnamen ändern muss. Ich würde gerne eine Möglichkeit haben, nur eine erste oder letzte zu aktualisieren, ohne eine andere zu beeinflussen. Wie kann ich es erreichen?
Ich kenne den Grund in JavaScript. Es unterstützt keine tiefe Klon oder tiefe Zusammenführung, also suche ich immer noch die Lösung. –