node.js 增删改查(原始)
Posted Mr Riven
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node.js 增删改查(原始)相关的知识,希望对你有一定的参考价值。
index.js 连接数据库
const mongoose = require(\'mongoose\') //数据库连接27017是mongodb数据库的默认端口 mongoose.connect(\'mongodb://localhost/playground\', { useNewUrlParser: true }) .then(() => console.log(\'数据库连接成功\')) .catch(() => console.log(\'数据库连接失败\'))
user.js 创建用户集合规则
const mongoose = require(\'mongoose\') // 创建用户集合规则 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) module.exports = User;
app.js 请求处理
const http = require(\'http\'); const url = require(\'url\') const querystring = require(\'querystring\') // 连接数据库 require(\'./model/index.js\') const User = require(\'./model/user.js\') // 创建服务器 const app = http.createServer(); // 为服务器对象添加请求事件 app.on(\'request\', async(req, res) => { // 请求方式 const method = req.method; // 请求地址 const { pathname, query } = url.parse(req.url, true) console.log(query, \'123\') console.log(pathname) if (method == "GET") { listtt = \'\' if (pathname == \'/list\') { let data = await User.find() listtt += ` <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <!-- 最新版本的 Bootstrap 核心 CSS 文件 --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> </head> <body> <div class="container"> <div class="row"> <div class="title col-md-10 col-md-offset-1"> <div class="head"> <a href="/add" class="btn btn-success">添加用户</a> </div> <div class="content"> <table class="table table-striped"> <thead> <tr> <th>用户名</th> <th>年龄</th> <th>爱好</th> <th>邮箱</th> <th$>操作</th> </tr> </thead> <tbody> ` data.forEach(item => { listtt += ` <tr> <td>${item.name}</td> <td>${item.age}</td> <td> ` item.hobbies.forEach(item => { listtt += ` <span>${item}</span> ` }) listtt += ` </td> <td>${item.email}</td> <td> <a href="/edit?id=${ item._id }" class="btn btn-default">修改</a> <a href="/delete?id=${item._id}" class="btn btn-danger">删除</a> </td> </tr> ` }); listtt += ` </tbody> </table> </div> </div> </div> </div> </body> </html> ` res.end(listtt) } else if (pathname == \'/add\') { add = ` <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- 最新版本的 Bootstrap 核心 CSS 文件 --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <title>Document</title> </head> <body> <div class="container"> <div class="row"> <div class="title col-md-10 col-md-offset-1"> <h1>添加用户</h1> <form method="post"> <div class="form-group"> <label for="exampleInputEmail1">姓名</label> <input name="name" type="text" class="form-control" id="exampleInputEmail1" placeholder="请输入姓名"> </div> <div class="form-group"> <label for="exampleInputPassword1">年龄</label> <input name="age" type="text" class="form-control" id="exampleInputPassword1" placeholder="请输入年龄"> </div> <div class="form-group"> <label for="exampleInputEmail1">密码</label> <input name="password" type="password" class="form-control" id="exampleInputEmail1" placeholder="请输入密码"> </div> <div class="form-group"> <label for="exampleInputPassword1">邮箱</label> <input name="email" type="email" class="form-control" id="exampleInputPassword1" placeholder="请输入邮箱"> </div> <div class="checkbox"> <label> <input type="checkbox" value="篮球" name=" hobbies" > 篮球 </label> <label> <input type="checkbox" value="足球" name=" hobbies" > 足球 </label> <label> <input type="checkbox"value="橄榄球" name=" hobbies" > 橄榄球 </label> <label> <input type="checkbox" value="敲代码" name=" hobbies" > 敲代码 </label> <label> <input type="checkbox" value="抽烟" name=" hobbies" > 抽烟 </label> <label> <input type="checkbox" value="喝酒" name=" hobbies"> 喝酒 </label> <label> <input type="checkbox" value="烫头" name=" hobbies" > 烫头 </label> </div> <button type="submit" class="btn btn-success">提交</button> </form> </div> </div> </div> </body> </html> ` res.end(add) } else if (pathname == \'/edit\') { let user = await User.findOne({ _id: query.id }); let hobbies = [\'足球\', \'篮球\', \'橄榄球\', \'敲代码\', \'抽烟\', \'喝酒\', \'烫头\'] let edit = `` var editid = user._id edit += ` <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- 最新版本的 Bootstrap 核心 CSS 文件 --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <title>Document</title> </head> <body> <div class="container"> <div class="row"> <div class="title col-md-10 col-md-offset-1"> <h1>编辑用户</h1> <form method="post" action="/edit?id="${user._id}"> <div class="form-group"> <label for="exampleInputEmail1">姓名</label> <input name="name" type="text" class="form-control" id="exampleInputEmail1" placeholder="请输入姓名" value="${user.name}"> <input name="useid" type="hidden" class="form-control" value="${user._id}"> </div> <div class="form-group"> <label for="exampleInputPassword1">年龄</label> <input name="age" type="text" class="form-control" id="exampleInputPassword1" placeholder="请输入年龄" value="${user.age}"> </div> <div class="form-group"> <label for="exampleInputEmail1">密码</label> <input name="password" type="password" class="form-control" id="exampleInputEmail1" placeholder="请输入密码" value="${user.password}"> </div> <div class="form-group"> <label for="exampleInputPassword1">邮箱</label> <input name="email" type="email" class="form-control" id="exampleInputPassword1" placeholder="请输入邮箱" value="${user.email}"> </div> <div class="checkbox"> ` hobbies.forEach(item => { console.log(item) //判断当前循环项在不在用户的爱好数组里 let isHobby = user.hobbies.includes(item); if (isHobby) { edit += ` <label> <input type="checkbox" checked name=" hobbies" value="${item}"> ${item} </label> ` } else { edit += ` <label> <input type="checkbox" name=" hobbies" value="${item}">${item} </label> ` } }) edit += ` </div> <button type="submit" class="btn btn-success">提交修改</button> </form> </div> </div> </div> </body> </html>` res.end(edit) } else if (pathname == \'/delete\') { // 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.replace(/\\+/g, "")) console.log(user[\'hobbies\']) //将提交的数据提交到数据库中 await User.create(user); // 301 代表重定向 // location 跳转地址 res.writeHead(301, { Location: \'/list\' }); res.end(); }) } else if (pathname == \'/edit\') { //接受用户提交的信息 let formData = \'\'; //接受post参数 req.on(\'data\', param => { formData += param; }) //post 参数接受完毕 req.on(\'end\', async() => { let user = querystring.parse(formData.replace(/\\+/g, "")) //将提交的数据提交到数据库中 await User.updateOne({ _id: user.useid }, { name: user.name, age: user.age, password: user.password, email: user.email, hobbies: user.hobbies }); // 301 代表重定向 // location 跳转地址 res.writeHead(301, { Location: \'/list\' }); res.end(); }) } } }) console.log(\'连接服务器成功\') app.listen(3000)
以上是关于node.js 增删改查(原始)的主要内容,如果未能解决你的问题,请参考以下文章