先打开 post.service ,在这个 getPosts 函数的上面,可以再定义并导出一个 interface,名字叫 GetPostsOptionsFilter
在这个 interface 里面描述一下要给 getPosts 的 options 参数里面添加的 filter 这个属性。它里面有 name ,类型是 string,这个 name 的值就是给过滤用的条件起的一个名字。
再添加一个 sql 属性,类型是 string,这个属性的值是用 SQL 表达出来的过滤条件。再添加一个 param ,类型是 string,它的值就是给过滤条件里的占位符提供的值。
然后在这个 GetPostsOptions 里面添加一个 filter,类型设置成上面定义的 GetPostsOptionsFilter。
在 getPosts 的主体里面,可以把 options 参数里的 filter 属性解构出来。 然后在下面先声明一个 SQL 参数,就是在执行查询的时候给 SQL 里面的占位符提供的那些值。用 let 声明一个 params ,这个东西的类型可以设置成 Array any,意思是它的值应该是个数组,数组里的数据可以是任意类型。先让它等于一个空白的数组。
然后再设置一下 SQL 参数。先做一下判断,如果 filter 里有 param ,我们就设置一下 params 的值,它的值是个数组,里面先把 filter 里的 param 添加进来,然后再把之前在 params 里面的东西也放进来。在后面做内容分页的时候我们会在这个 params 里面添加其它的参数。
找到准备的这段查询,在这段查询里面要添加一个 WHERE 设置一下过滤的条件,可以使用 filter 里的 sql 作为查询的过滤条件。
在执行这段 SQL 的时候,现在要提供占位符的值,这里可以把上面准备好的 params 放进来。