GraphQL Mongoose承诺最佳实践

时间:2017-07-08 21:57:30

标签: node.js mongodb mongoose graphql

使用GraphiQL,我可以使用以下命令(1)更新用户。 我能够通过服务返回实际用户(3)。

更新后是否有更简单/更紧凑的方式返回用户? (看看创建用户时有多容易)。

(1)GraphiQL变异命令     变异{       updateUser(id:“1”,firstName:“Bob”){         名字       }     }

(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 个答案:

答案 0 :(得分:0)

假设您正在使用mongoose

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

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