博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用户列表案例
阅读量:5039 次
发布时间:2019-06-12

本文共 8909 字,大约阅读时间需要 29 分钟。

首先利用数据库命令将用户信息的json文件导入项目文件夹下  本项目时前后端不分离案例

 

v>

用户列表案例
1. 搭建网站服务器,实现客户端与服务器端的通信
2. 连接数据库,创建用户集合,向集合中插入文档
3. 当用户访问/list时,将所有用户信息查询出来
1. 实现路由功能
2. 呈现用户列表页面
3. 从数据库中查询用户信息 将用户信息展示在列表中
4. 将用户信息和表格HTML进行拼接并将拼接结果响应回客户端
5. 当用户访问/add时,呈现表单页面,并实现添加用户信息功能
6. 当用户访问/modify时,呈现修改页面,并实现修改用户信息功能
修改用户信息分为两大步骤
1. 增加页面路由 呈现页面
2. 在点击修改按钮的时候 将用户ID传递到当前页面
3. 从数据库中查询当前用户信息 将用户信息展示到页面中
实现用户修改功能
1. 指定表单的提交地址以及请求方式
2. 接受客户端传递过来的修改信息 找到用户 将用户信息更改为最新的
7. 当用户访问/delete时,实现用户删除功能
// 搭建网站服务器,实现客户端与服务器端的通信// 连接数据库,创建用户集合,向集合中插入文档// 当用户访问/list时,将所有用户信息查询出来//     实现路由功能//     呈现用户列表页面//     从数据库中查询用户信息 将用户信息展示在列表中// 将用户信息和表格HTML进行拼接并将拼接结果响应回客户端// 当用户访问/add时,呈现表单页面,并实现添加用户信息功能// 当用户访问/modify时,呈现修改页面,并实现修改用户信息功能//     修改用户信息分为两大步骤//         1.增加页面路由 呈现页面//             1.在点击修改按钮的时候 将用户ID传递到当前页面//             2.从数据库中查询当前用户信息 将用户信息展示到页面中//         2.实现用户修改功能//             1.指定表单的提交地址以及请求方式//             2.接受客户端传递过来的修改信息 找到用户 将用户信息更改为最新的// 当用户访问/delete时,实现用户删除功能const http = require('http');const app = http.createServer();const url = require('url')const mongoose = require('mongoose')const querystring = require('querystring')// 创建数据库// 连接数据库mongoose.connect('mongodb://localhost/wrj', {    useNewUrlParser: true})// 创建数据库规则const Rules = new mongoose.Schema({    name: {        type: String,        required: true,        minlength: 2,        maxlength: 20    },    age: {        type: Number,        min: 18,        max: 80    },    password: String,    email: String,    hobbies: [String]})const User = mongoose.model('w', Rules);// 为服务器对象添加请求事件app.on('request', async (req, res) => {    // 请求方式    const method = req.method;    // 请求地址    const { pathname, query } = url.parse(req.url, true);    if (method == 'GET') {        // 呈现用户列表页面        if (pathname == '/list') {            // 查询用户信息            let users = await User.find();            // html字符串            let list = `                                                                    
用户列表
添加用户
`; // 对数据进行循环操作 users.forEach(item => { list += `
`; }); list += `
用户名 年龄 爱好 邮箱 操作
${item.name} ${item.age} `; item.hobbies.forEach(item => { list += `${item}`; }) list += ` ${item.email} 删除 修改
`; res.end(list); }else if (pathname == '/add') { // 呈现添加用户表单页面 let add = `
用户列表

添加用户

`; res.end(add) }else if (pathname == '/modify') { let user = await User.findOne({_id: query.id}); let hobbies = ['足球', '篮球', '橄榄球', '敲代码', '抽烟', '喝酒', '烫头', '吃饭', '睡觉', '打豆豆'] console.log(user) // 呈现修改用户表单页面 let modify = `
用户列表

修改用户

`; hobbies.forEach(item => { // 判断当前循环项在不在用户的爱好数据组 let isHobby = user.hobbies.includes(item); if (isHobby) { modify += `
` }else { modify += `
` } }) modify += `
`; res.end(modify) }else if (pathname == '/remove') { // res.end(query.id) await User.findOneAndDelete({_id: query.id}); res.writeHead(301, { Location: '/list' }); res.end(); } }else if (method == 'POST') { // 用户添加功能 if (pathname == '/add') { // 接受用户提交的信息 let formData = ''; // 接受post参数 req.on('data', param => { formData += param; }) // post参数接受完毕 req.on('end', async () => { let user = querystring.parse(formData) // 将用户提交的信息添加到数据库中 await User.create(user); // 301代表重定向 // location 跳转地址 res.writeHead(301, { Location: '/list' }); res.end(); }) }else if (pathname == '/modify') { // 接受用户提交的信息 let formData = ''; // 接受post参数 req.on('data', param => { formData += param; }) // post参数接受完毕 req.on('end', async () => { let user = querystring.parse(formData) // 将用户提交的信息添加到数据库中 await User.updateOne({_id: query.id}, user); // 301代表重定向 // location 跳转地址 res.writeHead(301, { Location: '/list' }); res.end(); }) } }});// 监听端口app.listen(3000);

 

转载于:https://www.cnblogs.com/treasurea/p/11255033.html

你可能感兴趣的文章
Mac 下的Chrome 按什么快捷键调出页面调试工具
查看>>
Windows Phone开发(24):启动器与选择器之发送短信
查看>>
JS截取字符串常用方法
查看>>
Google非官方的Text To Speech和Speech Recognition的API
查看>>
stdext - A C++ STL Extensions Libary
查看>>
Django 内建 中间件组件
查看>>
bootstrap-Table服务端分页,获取到的数据怎么再页面的表格里显示
查看>>
进程间通信系列 之 socket套接字及其实例
查看>>
天气预报插件
查看>>
Unity 游戏框架搭建 (十三) 无需继承的单例的模板
查看>>
模块与包
查看>>
mysql忘记root密码
查看>>
apache服务器中设置目录不可访问
查看>>
嵌入式Linux驱动学习之路(十)字符设备驱动-my_led
查看>>
【NOIP模拟】密码
查看>>
java容器---------手工实现Linkedlist 链表
查看>>
three.js 性能优化的几种方法
查看>>
《梦断代码》读书笔记(三)
查看>>
FreeMarker解析json数据
查看>>
Java8 Lambda表达应用 -- 单线程游戏server+异步数据库操作
查看>>