2017-07-08 5 views
1

Mit GraphiQL kann ich einen Benutzer mit dem folgenden Befehl (1) aktualisieren. Ich kann den tatsächlichen Benutzer mit dem Dienst (3) zurückgeben.GraphQL Mongoose versprechen Best Practices

Gibt es eine einfachere/kompaktere Möglichkeit, den Benutzer nach einem Update zurückzuschicken? (gesehen, wie einfach es ist, einen Benutzer zu erstellen).

(1) GraphiQL Mutation Befehl Mutation { Updateuser (ID: "1", Vorname: "Bob") { vorName } }

(2) die Mutation:

const mutation = new GraphQLObjectType({ 
updateUser: { 
    type: UserType, 
    args: { 
    id:   { type: new GraphQLNonNull(GraphQLString) }, 
    firstName: { type: GraphQLString }, 
    age:  { type: GraphQLInt }, 
    companyId: { type: GraphQLString } 
    }, 
    resolve(parentValue, args){ 
    return UserService.updateUser(args); 
    } 
}, 
}) 

(3) der Service:

function updateUser(args) { 
    var {id} = args; 
    return User.findOne({id}) 
    .then(user => { 
     if(!user){throw new Error('No user found')} 
     return User.update({id}, args) 
     .then(() => { 
      return User.findOne({id}) 
     }) 
    }) 
}, 
function addUser(args) { 
    const user = new User(args); 
    return user.save(args); 
} 

Antwort

1

Angenommen, Sie‘ wieder mit mongoose:

function updateUser(args) { 
    var {id} = args; 

    return await User.findOneAndUpdate({ id }, args, { new: true }); 
}, 
+0

Dank Aaroh, das ist großartig. Ich kann nicht herausfinden, wie kommt, dass ich das nicht alleine gefunden habe ... Ich suchte jedoch .. – Sbe88

+0

Ah habe ich vergessen zu erwähnen, dass Sie wahrscheinlich die Operation abwarten wollen. Überprüfen Sie meine Antwort noch einmal. –