2017-07-08 2 views
1

GraphiQLを使用して、次のコマンド(1)でユーザーを更新できます。 サービス(3)で実際のユーザーを返すことができます。GraphQL Mongooseのベストプラクティス

更新後にユーザーを返す方法がよりシンプルでコンパクトになっていますか? (ユーザーの作成時にどのくらい簡単かが分かります)。

(1)GraphiQL変異コマンド 突然変異{ updateUser(ID: "1"、firstNameの "ボブ"){ のfirstName } }

(2)突然変異:

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)サービス:

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); 
} 

答えて

1

はあなたと仮定すると」再使用mongoose

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

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

ありがとうアオロ、それは素晴らしいです。私は自分自身でそれを見つけられなかったのはわかりません...しかし、私は検索しました。 – Sbe88

+0

ああ、おそらくあなたが操作を待っていることを忘れていました。私の答えをもう一度チェックしてください。 –

関連する問題