案例:用户信息增删改查理论分析
完整代码在这
完成功能要求
- 搭建网站服务器,实现客户端与服务器端的通信
- 连接数据库,创建用户结合,向集合中插入文档
- 当用户访问/list时,将所有用户信息查询出来
- 将用户信息和表格HTML进行拼接并将结果响应回客户端
- 当用户访问/add时,呈现表单页面,并实现添加用户信息功能
- 当用户访问/modify时,呈现修改页面,并实现修改用户信息功能
- 当用户访问/delete时,实现用户删除功能
程序实现步骤
程序实现步骤
- 创建服务器
- 连接数据库
- 创建数据 创建集合 文档 之类的具体可参考MongoDB数据库这一节
- 导入数据到数据库:之前做的小例子也是playground数据库,所以我把他全部删除了,要重新连接新的数据库playground 只需要在powershell里面输入node app.js(对应文件名字)就好了 然后使用mongoimport命令导入数据
- 实现用户信息展现页面 分为下面几个小步骤
- 实现路由功能 可参考服务器端基本概念学习笔记
- 呈现用户列表页面
把list的html文件内容赋值给list变量
呈现用户列表页面主要代码
if (method == 'GET') {
if (pathname == '/list') {
//把list的html文件内容赋值给list变量
let list = `list页面的html文件内容`;
res.end(list);
}
}
- 从数据库中查询用户信息,将用户信息展示在列表中 从地址栏中输入的list页面大多属于get方式,post会实现一些功能,所以呢这部分内容写在get方式里面
- 点击添加 要呈现表单页面 并实现添加用户信息功能 跟
list
一样通过赋值的方式呈现add页面
同时点击list页面的添加用户功能也要跳转 所以把list 里面的添加用户的按钮href =/add
- 点击表单页面的添加用户按钮时 是post请求方式 所以要在表单form 里面指定请求方式
method=post
615 4:33
点击add页面的添加按钮应该能添加数据到数据库
首先考虑在Post请求中接收我们输入的数据
代码示例如下
else if (method == 'POST') {
if (pathname == '/add') {
//接收用户的信息
let formData = '';
//接收post参数
req.on('data', (param) => {
formData += param;
});
//post参数接收完毕
req.on('end', () => {
console.log(formData);
});
//将用户提交的信息添加到数据库中
}
}
上面代码的执行结果
我们要想办法把这个参数进行格式转换,使用querystring进行转换,但是这里得到的object:null …好像无所谓参考博文
把用户输入的数据存入到数据库:
存数据代码示例,存储完成之后又跳到了list页面
//post参数接收完毕
req.on('end', async() => {
let user = querystring.parse(formData);
//将用户提交的信息添加到数据库中
await User.create(user);
// res.end('ok');
//301代表重定向 重新跳到list
//location 就是我们期望跳到的页面
res.writeHead(301, {
location: '/list'
});
res.end();
});
- 修改用户信息分为两大步骤:
- 增加页面路由 呈现页面
在点击修改按钮的时候 将用户ID传递到当前页面
从数据库中查询当前用户信息 将用户信息展示到页面中
- 实现用户修改功能
指定表单提交地址以及请求方式
接收客户端传递过来的修改信息 找到用户 将用户信息更改为最新的数据
删除功能
为删除按钮添加链接
首先也是找到list页面为删除按钮添加链接
所有代码写在一个文件???不会吧 当然不是啦
将数据库连接代码放到index.js
文件中 创建集合代码放到user.js
中 字符串拼接
可以使用后面要学习的模板引擎来解决
619完结,下次开始学习模板引擎,学完之后自己再分析整个用户信息列表数据代码