Когда я выполняю мутацию в graphiql, который использует мой код для сервера GraphQL, он возвращает ноль для всех записей в объекте.
Я использую серверную часть Node and Express и использую базу данных MongoDB, которая использует mongoose для доступа к ней.
updateTodo: {
type: TodoType,
args: {
id: {
type: new GraphQLNonNull(GraphQLID)
},
action: {
type: new GraphQLNonNull(GraphQLString)
}
},
resolve(parent, args) {
return Todo.updateOne({ // updateOne is a MongoDB/mongoose function
_id: args.id
}, {
$set: {
action: args.action
}
});
}
}
Что я получаю
{
"data": {
"updateTodo": {
"id": null,
"action": null
}
}
}
из следующего
mutation {
updateTodo(id: "5c18590fa6cd6b3353e66b06", action: "A new Todo") {
id
action
}
Я делаю это потом
{
todos{
id
action
}
}
и получаю это
{
"data": {
"todos": [
{
"id": "5c18590fa6cd6b3353e66b06",
"action": "A new Todo"
}
]
}
}
, поэтому я знаю, что это работает, но предпочел бы получитьвозвращение новых данных.
Дополнительная информация
const TodoType = new GraphQLObjectType({
name: 'Todo',
fields: () => ({
id: {
type: GraphQLID
},
action: {
type: GraphQLString
},
isCompleted: {
type: GraphQLBoolean
},
user: {
type: UserType,
resolve(parent, args) {
return User.findById(parent.userId);
}
}
})
});
Импортировано в файл.
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const todoSchema = new Schema({
action: String,
isCompleted: Boolean,
userId: String
})
module.exports = mongoose.model('Todo', todoSchema);
Здесь находится репозиторий github, поэтому вы можете посмотреть код https://github.com/petersrule/graphql-node-express-boilerplate