title: GraphQL Mongoose promise best practices
body: <p>Using GraphiQL, I'm able to update a user with the following command (1). 
  I'm able to return the actual user with the service (3).</p>
  
  <p><strong>Is there simpler/more compact way of returning the user after an update? (seen how easy it is when creating a user).</strong></p>
  
  <p>(1) GraphiQL mutation command
      mutation {
        updateUser(id: "1", firstName: "Bob"){
          firstName
        }
      }</p>
  
  <p>(2) the mutation:</p>
  
  <pre><code>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);
    }
  },
  })
  </code></pre>
  
  <p>(3) the service:</p>
  
  <pre><code>function updateUser(args) {
    var {id} = args;
    return User.findOne({id})
      .then(user =&gt; {
        if(!user){throw new Error('No user found')}
        return User.update({id}, args)
           .then(() =&gt; {
             return User.findOne({id})
           })
      })
  },
  function addUser(args) {
    const user = new User(args);
    return user.save(args);
  }
  </code></pre>