持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第7天,点击查看活动详情
项目要求
通过一个小项目实践 Node.js 各个知识点。麻雀虽小,五脏俱全,这个项目会从 0~1,逐步完成所有需求。该项目实现接口有注册、登录、获取用户信息等等
个人中心
获取用户的基本信息
实现步骤
- 初始化路由模块
- 初始化路由处理函数模块
- 获取用户的基本信息
初始化路由模块
-
创建
/router/userinfo.js路由模块,并初始化如下代码// 导入 express const express = require('express') // 创建路由对象 const router = express.Router() // 获取用户的基本信息 router.get('/userinfo', (req, res) => { res.send('ok') }) // 向外共享路由对象 module.exports = router -
在
app.js中导入并使用个人中心的路由模块// 导入并使用用户信息的路由模块 const userInfoRouter = require('./router/userinfo') // 注意:以 /my 开头的接口,都是有权限的接口,需要进行 Token 身份验证 app.use('/my', userInfoRouter)
初始化路由处理函数模块
-
创建
/router_handler/userinfo.js路由处理函数模块,并初始化如下代码结构// 获取用户信息 exports.getUserInfo = (req, res) => { res.send('ok') } -
修改
/router/userinfo.js中的代码如下// 导入 express const express = require('express') // 创建路由对象 const router = express.Router() // 导入路由处理函数路由 const userinfo_handler = require('../router_handler/userinfo') // 获取用户的基本信息 router.get('/userinfo', userinfo_handler.getUserInfo) // 向外共享路由对象 module.exports = router
获取用户的基本信息
-
在
/router_handle/userinfo.js头部导入数据库操作模块// 导入数据库操作模块 const db = require('../db/index') -
定义 SQL 语句
// 根据用户的 id,查询用户的基本信息 // 注意:为了防止用户的密码泄漏,需要排除 password 字段 const sql = `select id, username, niekname, email, user_pic from ev_users where id=?` -
调用
db.query()执行 SQL 语句// 注意:req 对象上的 auth 属性,是 token 解析成功,express-jwt 中间件挂载上去的 // 获取用户基本信息的处理函数 exports.getUserInfo = (req,res) => { // 定义查询用户信息的 SQL 语句 const sql = `select id, username, niekname, email, user_pic from ev_users where id=?` // 调用 db.query() 执行 SQL 语句 db.query(sql,req.auth.id, (err, results) => { // 执行 SQL 语句失败 if(err) return res.cc(err) // 执行 SQL 语句成功,但是查询的结果可能为空 if(results.length !== 1) return res.cc('获取用户信息失败') // 用户信息响应给客户端 res.send({ status:0, message:'获取用户信息成功', data: results[0] }) }) }