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 增删改查(原始)的主要内容,如果未能解决你的问题,请参考以下文章

Node.js笔记-node.js连接MySQL与增删改查

Node.js + MySQL 实现数据的增删改查

node.js操作mysql数据库之增删改查

Node.js学习11~基于Egg.js框架,对MySQL数据库实现增删改查操作

Node.js操作mysql数据库之增删改查

node.js Sequelize操作mysql基本的增删改查demo