前端学习(1348):用户的增删改查操作5修改

//创建http连接
const http = require('http');
//创建服务器
const app = http.createServer();
//第三方模块导入
const mongoose = require('mongoose');
//获取连接
const url = require('url');
//
const querystring = require('querystring');
//数据库连接地址
mongoose.connect('mongodb://localhost/playground', { useNewUrlParser: true }).then(() => console.log('数据库连接成功')).catch(() => console.log('数据库连接失败'));
//创建用户集合
const userSchema = 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('User', userSchema);
//添加属性事件
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();console.log(users);let list = `<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title></head><body><div class="container"><h6><a href="/add" class="btn btn-primary">添加用户</a></h6><table class="table table-striped table-bordered"><tr><td>用户名</td><td>年龄</td><td>爱好</td><td>邮箱</td><td>操作</td></tr>`;//循环users.forEach(item => {list += `<tr><td>${item.name}</td><td>${item.age}</td><td>`item.hobbies.forEach(item => {list += `<span>${item}</span>`})list += ` </td> <td>${item.email}</td><td><a href="">删除</a>|<a href="/modify?id=${item._id}">修改</a></td></tr>`;})list += `       </table></div></body></html>`res.end(list);} else if (pathname == '/add') {let add = `<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title></head><body><div class="container"><h3>添加用户</h3><form method="post" action="/add"><div class="form-group"><label>用户名</label><input name="name" type="text" class="form-control" placeholder="请输入用户名"></div><div class="form-group"><label>密码</label><input name="password" type="password" class="form-control" placeholder="请输入密码"></div><div class="form-group"><label>年龄</label><input name="age" type="text" class="form-control" placeholder="请输入年龄"></div><div class="form-group"><label>邮箱</label><input name="email" type="text" class="form-control" placeholder="请输入年龄"></div><div><label class="checkbox-inline"><input type="checkbox" value="足球" name="hobbies">足球</label><label class="checkbox-inline"><input type="checkbox" value="篮球" name="hobbies">篮球</label><label class="checkbox-inline"><input type="checkbox" value="游戏" name="hobbies">游戏</label><label class="checkbox-inline"><input type="checkbox" value="娱乐" name="hobbies">娱乐</label><label class="checkbox-inline"><input type="checkbox" value="爬山" name="hobbies">爬山</label><label class="checkbox-inline"><input type="checkbox" value="划船" name="hobbies">划船</label><button type="submit">添加用户</button></div></form></div></body></html>`res.end(add);} else if (pathname == '/modify') {let user = await User.findOne({ _id: query.id });let hobbies = ['足球', '篮球', '游戏', '娱乐', '爬山', '划船'];let modify = `<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title></head><body><div class="container"><h3>修改用户</h3><form method="post" action="/modify?id=${user._id}"><div class="form-group"><label>用户名</label><input value='${user.name}' name="name" type="text" class="form-control" placeholder="请输入用户名"></div><div class="form-group"><label>密码</label><input value='${user.password}' name="password" type="password" class="form-control" placeholder="请输入密码"></div><div class="form-group"><label>年龄</label><input value='${user.age}' name="age" type="text" class="form-control" placeholder="请输入年龄"></div><div class="form-group"><label>邮箱</label><input value='${user.email}' name="email" type="text" class="form-control" placeholder="请输入年龄"></div><div></html>`hobbies.forEach(item => {//判断爱好是不是在数组里面let isHobby = user.hobbies.includes(item);if (isHobby) {modify += `<label class="checkbox-inline"><input type="checkbox" value="${item}" name="hobbies" checked>${item}</label>`} else {modify += `<label class="checkbox-inline"><input type="checkbox" value="${item}" name="hobbies">${item}</label>`}})modify += `    <button type="submit">修改用户</button></div></form></div>
</body>`res.end(modify);}} else if (method == 'POST') {//接受用户提交信息if (pathname == '/add') {let formData = '';req.on('data', param => {formData += param;})req.on('end', async() => {let user = querystring.parse(formData);await User.create(user);res.writeHead(301, {Location: 'list'});res.end();})} else if (pathname == '/modify') {let formData = '';req.on('data', param => {formData += param;})req.on('end', async() => {let user = querystring.parse(formData);await User.updateOne({ _id: query.id }, user);res.writeHead(301, {Location: 'list'});res.end();})}}url.parse(req.url);/* res.end('ok'); */
})
app.listen(3000);

运行结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/420259.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

parallelStream与stream

并行流&#x1f36d; 多线程并发&#x1f36d; 多线程并发 &#x1f355;stream与parallelStream 下面的代码分别用了parallelStream与stream进行迭代。获取对应的每一项值&#xff0c;和对应的线程名称。 package top.lel.jvm.sdk.stream;import java.util.List; import jav…

前端学习(1349):用户的增删改查操作6删除

//创建http连接 const http require(http); //创建服务器 const app http.createServer(); //第三方模块导入 const mongoose require(mongoose); //获取连接 const url require(url); // const querystring require(querystring); //数据库连接地址 mongoose.connect(mon…

0网卡开启_中标麒麟Linux v7系统下设置双网卡bond或team绑定详细过程

中标麒麟Linux v7系统下设置双网卡bond或team绑定详细过程。所谓bond&#xff0c;就是把多个物理网卡绑定成一个逻辑网卡&#xff0c;使用同一个IP工作&#xff0c;在增加带宽的同时也可以提高冗余性&#xff0c;一般使用较多的就是来提高冗余&#xff0c;分别和不同交换机相连…

前端学习(1350):用户的增删改查操作7增删改查

demo25.js //创建http连接 const http require(http); //创建服务器 const app http.createServer(); //第三方模块导入 /* const mongoose require(mongoose); */ //获取连接 const url require(url); // const querystring require(querystring);require(./demo26.js);…

基于aop的日志记录

aop实现日志记录记录工具切面logback配置测试记录工具 目标&#xff1a; 统计rest接口请求参数&#xff0c;请求地址&#xff0c;请求IP&#xff0c;响应数据&#xff0c;响应时间。方便后续问题排查&#xff0c;以及性能的总体分析。 基于springboot会使用面向切面编程基于l…

前端学习(1351)模板引擎

const template require(art-template); //绝对路径 模板中显示的数据 const path require(path); const views path.join(__dirname, index.art); const html template(views, {name: 张三,age: 20 }); console.log(html); index.art <!DOCTYPE html> <html la…

前端学习(1352)模板语法

demo27.js const template require(art-template); //绝对路径 模板中显示的数据 const path require(path); const views path.join(__dirname, 01.art); const html template(views, {name: 张三,age: 20,content: <h1>我是歌谣</h1> }); console.log(html)…

前端学习(1353)模板语法条件判断

const template require(art-template); //绝对路径 模板中显示的数据 const path require(path); const views path.join(__dirname, 02.art); const html template(views, {name: 张三,age: 20,/* content: <h1>我是歌谣</h1> */ }); console.log(html); 0…

MySql 缓存查询原理与缓存监控 和 索引监控

MySql缓存查询原理与缓存监控 And 索引监控 by:授客 QQ&#xff1a;1033553122 查询缓存 1.查询缓存操作原理 mysql执行查询语句之前&#xff0c;把查询语句同查询缓存中的语句进行比较&#xff0c;且是按字节比较&#xff0c;仅完全一致才被认为相同。如下&#xff0c;这两…

前端学习(1354):集合关联

const mongoose require(mongoose); mongoose.connect(mongodb://localhost/playground, { useUnifiedTopology: true }).then(() > console.log(数据库连接成功)).catch(err > console.log(err, 数据库连接失败)) const userSchema new mongoose.Schema({name: {type:…

ati jti jwt 和_一文搞懂JWT

Django REST framework JWT一、JWT简介二、JWT 组成headersignature三.使用手动生成jwt前端保存jwt一、JWT简介JWT(Json Web Token) 是一个开放标准(RFC 7519)&#xff0c;它定义了一种用于简洁&#xff0c;自包含的用于通信双方之间以 JSON 对象的形式安全传递信息的方法。JWT…

前端学习(1355)模板语法循环

const template require(art-template); //绝对路径 模板中显示的数据 const path require(path); const views path.join(__dirname, 03.art); const html template(views, {users: [{name: geyao,age: 20,sex: 男}, {name: xiao,age: 20,sex: 男}, {name: hau,age: 20,se…

c++检测ip是否匹配子网掩码_网络工程师从入门到精通通俗易懂系列 | ARP和IP这篇文章讲的相当详细了,这么基础的知识往往也是最容易遗忘的!...

网络层负责将报文从源送到目的包括TCP建立连接&#xff0c;也需要依靠网络层&#xff0c;来将这个连接请求&#xff0c;传递到对方。为设备提供逻辑地址&#xff0c;也就是IP地址主流是IPV4地址IPV4地址&#xff0c;为32位二进制数&#xff0c;长度4个字节&#xff0c;1字节等于…

前端学习(1357) :模板配置

const template require(art-template); //绝对路径 模板中显示的数据 const path require(path); const views path.join(__dirname, 07.art); const dateFormat require(dateFormat) template.defaults.imports.dateFormat dateFormat; const html template(views, {ti…

使用Office Word 2010/2013 发布文章到博客园

使用Office Word 2010/2013 发布文章到博客园 ☆&#xff1a;参考http://www.cnblogs.com/liuxianan/archive/2013/04/13/3018732.html&#xff1b; 软件准备&#xff1a;Office Word2010/2013 初次使用&#xff0c;必要的配置&#xff1a; Office Word2010&#xff1a;代开wor…

前端学习(1355) 子模板

const template require(art-template); //绝对路径 模板中显示的数据 const path require(path); const views path.join(__dirname, 04.art); const html template(views, {msg: 我是首页,name: geyao,age: 20 }); console.log(html); 04.art {{include./index.art}} {…

前端学习(1358) :渲染模板默认

const template require(art-template); //绝对路径 模板中显示的数据 const path require(path);const dateFormat require(dateFormat) template.defaults.imports.dateFormat dateFormat; template.defaults.root path.join(__dirname); template.defaults.extname .a…

UML九种图 之 包图和对象图

前言 对象图和包图依然是对系统的静态的描写叙述。UML九种图加上包图&#xff0c;事实上是十幅图。 包图 1.构成 2.包中的元素 类、接口、用例、构件、其他包等。&#xff08;若包被撤销&#xff0c;当中的元素被撤销&#xff09; 3.包之间的关系 泛化、细化、依赖&#xff08;…

前端学习(1359) :学生档案信息管理1

\ service.js //引入http模块 const http require(http); //创建网站服务器 const app http.createServer(); // require(./connect.js) const Student require(./user.js) app.on(request, (req, res) > {res.end(ok); }); app.listen(3000); console.log(服务器启动成…

刚学unity3d,跟着仿作了flappy bird,记下一些琐碎的心得!

1、关于场景&#xff0c;即scene。 一个正常的游戏至少要有三个场景&#xff0c;即菜单&#xff08;或者文件夹&#xff09;场景、游戏关卡场景、游戏结束场景。它们一般统一放在project文件夹下scene文件夹&#xff08;自己创建&#xff09;中&#xff0c;方便管理。1.1场景切…