用户登录

现在我们需要一个按用户 ID 获取用户数据的功能,先找开 user.service 这个文件。在这里之前我们在 user.service 里定义过一个 getUserByName 函数,它可以按用户的名字获取用户数据。

要定义的这个按用户 ID 获取用户数据的功能跟这个 getUserByName 差不多,只不过在查询用户数据的时候要按用户 ID 作为查询条件。可以这样,定义一个函数,使用它的时候提供一个查询条件参数,这个函数就会制造出一个相应的函数。

先剪切一下 getUserByName 这个函数的主体部分,然后修改一下函数的名字,换成 getUser,等会儿我们会使用这个 getUser 函数生成一个 getUserByName 函数。 上面这个注释换成 获取用户 。

继续编辑 getUser,它是一个函数,让它接收一个 condition 参数,类型是 string,用箭头函数的写法定义这个函数。函数会 return 一个函数,也就是执行这个函数的时候,它就会制造出来一个函数。

把刚才剪切的函数粘贴到这里,要制造的这个函数接收一个 param 参数,类型可以是 string 也可以是 number。另外还有一个 options 参数。

修改一下在函数里准备的查询,因为要在查询里拼接其它的数据表,所以选择栏目的时候最好加上数据表的名字,user.id,user.name 。

然后再用 IF 判断一个条件,给栏目起个名字叫 avatar,这个 avatar 的值就是标记一下这个用户有没有上传过头像。在 IF 里面,判断的条件是 COUNT 一下 avatar 的 id ,如果有就让 avatar 的值等于 1,如果没上传过头部,就让 avatar 的值是 null。

FROM 的后面是数据来源,这里就是 user 数据表,然后用 LEFT JOIN 拼接一下 avatar 数据表, 在 ON 的后面设置拼接条件,条件是 avatar 里的 userId 等于 user 的 id。

修改一下在 WHERE 后面设置的查询条件,条件换成 condition ,这个 condition 就是 getUser 函数接收的一个参数,也就是如果我们在执行 getUser 的时候,给它提供的 condition 是 user.name,那它制造出来的这个函数就会按用户名查找用户,如果提供的是 user.id ,制造出来的函数就会按用户的 id 查找用户。

执行查询的时候要提供查询里的占位符的值,把 name 换成 param。这个 param 是 getUser 制造出来的这个函数接收的一个参数。

最后让它提供找出来的用户数据,这里要做一下判断,检查 data 里的第一个项目的 id 属性的值,如果这个值是真的,就返回 data 里的第一个项目,如果不是真的,就让函数返回 null 。

下面我们可以使用这个函数制造一个按用户名获取用户的函数。 export const 函数的名字叫 getUserByName,用 getUser 制造一个函数,设置一下过滤条件,这里就是 user.name,也就是按 user 数据表里的 name 栏目的值,获取到指定名字的用户数据。 这个 user.name 会用在查询里的 WHERE 语句的后面。

另外我们还需要一个按用户的 ID 获取用户数据的功能,同样可以使用这个 getUser 制造一个这样的函数。导出一个 getUserById,这个就是函数的名字,执行一下 getUser,用它制造一个函数,给提供一个条件参数,这里要把它设置成 user.id,这样得到的这个函数就会按照用户表的 id 栏目的值,找出指定的用户。

定义获取用户数据功能《 Node.js 服务端应用开发:资源接口 》

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点