发布内容可以交给一个命令完成,在终端,项目所在目录的下面,执行 npm run gc 生成一个命令,名字是 create-post,放在 post/modules/create/commands 里面。
回到项目,打开刚才生成的这个命令,CreatePostCommand,让这个命令参数 extends 继承一下 CreatePostDto,然后再添加一个 userId ,类型是 number 。
打开这个命令的处理器,先在处理器构造方法里注入一个 Repository 依赖,对应的实体是 PostEntity,名字是 userRepository,然后分别再导入需要用的这些东西。
在 execute 里面,声明一个 post,等于 await,用一下 this.postRepository.save,把 command.params 交给这个方法。最后返回的东西可以是一个对象,里面添加一个 insertId,值是 post.id 。
PostCreateController
打开 PostCreateController,在这个控制器的构造方法里,注入一个依赖,需要的是 CommandBus 。下面这个 createPost 方法里面需要用到当前用户,用 @CurrentUser 装饰器装饰一个参数,名字是 user,类型是 UserEntity。
在方法里 return 的东西可以是执行 CreatePostCommand 命令返回的结果,新建一个 CreatePostCommand,提供一个对象,把 body 里的东西先放进来,然后添加一个 userId,值是 user.id 。
测试
在 Http 客户端测试一下,发送一下这个创建内容请求,成功以后会得到这个新创建的内容的 id。再打开数据库客户端观察一下 post 数据表,现在这个表里会出现一条数据记录。