达成【100篇博文成就】
跟着老师的视频,今天把接口写好了,主要是riend和detail就是用户详情页。
posts朋友圈文章接口:
// 用户下所有的posts 接口 router.get('/:id/post', (req, res) => { connect.query( 'select * from posts where userId = ?', //?问号是占位符 {model: model.Post, replacements: [req.params.id]} //replacements起到get链接里的ID替换 // 再吧查询到的结果传到model对象中,model对象就有了相应的增删改方法 ).then((list) => { res.send(list); //返回list }); });
结果展示返回用户所有朋友圈:
下面是friend接口,就是SQL要注意,不仅是userId = 1(1代表某个用户ID) 而且还要加上friendId也为1的用户信息。
select * from users where id in(select userId from relations where friendId = ?) or id in(select friendId from relations where userId = ?)
// 用户所有的朋友 router.get('/:id/friend', (req, res) => { connect.query( 'select * from users where id in(select userId from relations where friendId = ?) or id in(select friendId from relations where userId = ?)', {model: model.User, replacements: [req.params.id, req.params.id]} //两个参数替换 ).then((list) => { res.send(list); //返回list }); });
其实老师说可以这个SQL这么长,可以另外再写一个.sql文件,把SQL放里面,外面嵌套一个标签。
<user> select * from users where id in(select userId from relations where friendId = 1) or id in(select friendId from relations where userId = 1) </user>
但是老师说留个课后作业,让我们自己找怎么把SQL从XML标签里取出来……我也没去查,这个问题就留在这儿吧。
结果展示返回用户朋友列表:
下面是服务端代码包装三个接口,否则就得让前端发3个ajax请求来调接口。(其实这里具体听到不是很懂,只是看课堂上同学们在议论到底是前端写3次请求,还是后端包装3个接口...)
//统一包装三个接口 router.get('/:id/detail', (req, res) => { USER.findById(req.params.id) .then(item => { connect.query( 'select * from posts where userId = ?', {model: model.Post, replacements: [req.params.id]} ).then((list) => { item.dataValues.post = list; //返回说说列表 connect.query( 'select * from users where id in(select userId from relations where friendId = ?) or id in(select friendId from relations where userId = ?)', {model: model.User, replacements: [req.params.id, req.params.id]} ).then((list) => { item.dataValues.friend = list; //返回朋友列表 res.send(item); }); }); }); });
上面是服务端包装了3个接口,代码看起来很凌乱,但是没办法,要不然前端乱,要不然后端乱,总有一个地方要乱的。
结果展示返回某一位用户的详细信息、朋友圈列表、好友列表:
今天分享的就是这些,又快到11点半了,说好要改作息时间的,11点之前睡是最理想的了。
不说了,大家晚安呐。
Nice Dream.
如对本文有疑问, 点击进行留言回复!!
MFC的静态库.lib、动态库.dll(包含引入库.lib)以及Unicode库示例
CTF 刷题记录(一) 白云新闻搜索(手动与自动化SQL注入)
javascript如何使用函数random来实现课堂随机点名方法详解
网友评论