• 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)
  • 相关阅读:
    课后作业
    课后作业
    课后作业3
    课后作业
    课后作业
    课后作业
    java 加减法2
    java 出计算题
    Java web 登录界面
    构建之法读后感
  • 原文地址:https://www.cnblogs.com/Rivend/p/12334103.html
Copyright © 2020-2023  润新知