Smart Brain Back End Database

有了postgresql就可以不用server.js里面写的数据库了在这里插入图片描述

建立数据库

建立一个叫smart-brain的数据库。
在这里插入图片描述
首先user表,每个id为主键且连续的,邮件不可重复,还有加入的日期。目前而言不把密码加入user表中
在这里插入图片描述
然后是login 表格,密码会用hash来存储

连接数据库

我们会使用到KNEXJS来链接数据库。可参考https://knexjs.org/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

\d可以看到已经的表和用户,密码默认为空

在这里插入图片描述
SELECT 操作
直接console.log会返回所有的信息,实际我们只需要user里面的数据,所以要用到then
在这里插入图片描述
之前加了.then()一直报错(node:2720) UnhandledPromiseRejectionWarning:
实际是因为服务器和表的用户不同,将表的用户也改成postgres就有结果了。
在这里插入图片描述
在这里插入图片描述

用户注册

如果由用户注册,要将用户信息insert into users表中。
在这里插入图片描述
将request的body插入表中,其中id和entries是自动生成的可以不管
在这里插入图片描述

用POSTMAN进行测试
在这里插入图片描述
插入成功
在这里插入图片描述
可以加一个return(’*’)返回所有的数据,并且response为插入的内容。
在这里插入图片描述
再加一个catch().,如果用相同的邮箱注册就会报错
在这里插入图片描述

在这里插入图片描述
测试前端是否可行,输入用户ade,确认可以跳转home页面并显示名字
在这里插入图片描述
然而如果注册相同用户也会跳转,会报错,但是不会返回名字。在最后一个部分,把sign.js和register.js调整之后,报错就不会跳转了

Getting User Profiles

报错端口占用,把原来3001改成3002
在这里插入图片描述
在server.js里面直接用SELECT指令查找登陆的用户,并返回用户信息,如果返回空数组,.catch()里面依旧不会报错,所以要加一个if else。
在这里插入图片描述

Updating entries

/image里面每次发送id后,该用户的entries要加一。本来应该用update的 但实际用increment()更方便
在这里插入图片描述

SIGN IN

目前Login表中什么都没有,所以在register时候,要把login的email和密码都放进去。
密码不能直接放,所以用bcrypt
在这里插入图片描述
然后涉及到TRANSACTION(事务),在事务顺序中先把login中email和密码放进去,id会自动生成。然后返回email,在将email等信息插入user表中。值得注意的是,后来事务要commit和rollback才能生效。
因为之前在users中插入了很多用户,导致users和login中自动生成的ID不一样,如果把两者都清空,ID会是一样的
在这里插入图片描述
Sign in登陆进去要根据邮箱找到login对应的hash,然后用bcrypt.compareSync比较输入的密码和hash是否对得上,如果能够对上,返回users里面的用户数据,如果不能,就返回error 400
而且,必要时要加return,不然结果不会返回。
在这里插入图片描述

整合所有

目前的问题是如果我们登录一个不存在的用户,界面依旧会跳转到home界面,即使response返回的是400。
找到前端的signin.js,server.js里面sign in会返回用户的所有信息,检查如果用户的id不存在,那么就无法登陆进去
在这里插入图片描述
register同理,检查用户id,如果重复注册就没有办法登陆进去。
在这里插入图片描述

至此为止这个SMART BRAIN网站就完成了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值