• express+monogodb实现增删改查



    typora-copy-images-to: images
    typora-root-url: ./


    express+monogodb实现增删改查

    1.在项目中添加mongodb数据库

    npm install –save mongoose
    

    2.链接操作

    创建目录config

    ​ config.js 数据库配置文件

    ​ mongoose.js 数据库链接相关文件

    config.js

    module.exports={
        mongodb:"mongodb://localhost/ch_db" // 导入数据库连接
    };
    

    mongoose.js

    var mongoose=require('mongoose');
    var config=require('./config.js');           //引入config配置文件夹下的配置文件
    module.exports = function(){
        mongoose.connect(config.mongodb);   //创建数据库连接对象db
        //创建mongoose实例对象
        const db = mongoose.connection;
        //连接异常
        db.on('error', (err) => {
            // console.error.bind( '连接错误:')
            console.log('MongoDB连接失败!!')
        })
        //连接成功
        db.once('open', (callback) => {
            console.log('MongoDB连接成功!!')
        })
        //连接断开
        db.on('disconnected', function () {
            console.log('Mongoose connection disconnected');
        });
        return db;
    }
    

    3.models文件夹 内创建Schema

    • Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力

    创建目录:models

    创建文件user.server.model.js

    var mongoose = require('mongoose');
    var Schema = mongoose.Schema;
    console.log(mongoose)
    
    var UserSchema=new Schema({
        uid:Number,
        username:String,
        createTime:Date,
        lastLogin:Date
    });
    module.exports = UserSchema;
    

    4.入口文件app.js内调用初始化数据库

    注:需要在路由方法之前调用

    app.js

    //省略...
    /* 需要先定义和初始化mongoose */
    const mongoose = require('./config/mongoose.js')
    const db = mongoose();
    app.use('/', indexRouter);
    app.use('/user', usersRouter);
    //省略...
    

    5.在路由的方法内调用数据库实现增删改查

    1.方法调用

    var express = require('express');
    var router = express.Router();
    //创建model,这个地方的ch_user对应mongodb数据库中ch_users的conllection。
    //mongoose会自动改成复数,如模型名:xx―>xxes, kitten―>kittens, money还是money
    var mongoose = require('mongoose');
    var UserSchema = require('../models/user.server.model');
    var User=mongoose.model('User',UserSchema);//创建mongoose下model对象
    

    2.实现增删改查

    • 查 find
    • 增 save
    • 改 findOneAndUpdate
    • 删 findOneAndRemove
    /* 查 */
    router.get('/find',function(req,res,next){
        User.find({
            uid: 1,
            username: 'caopeng'
        }, function (err, docs) {
            if(err){
                console.log('Error:');
                return next();
            }
            res.json(docs);
        });
    });
    /* 增 */
    router.get('/add',function(req,res,next){
        var user=new User({
            uid:1,
            username:'caopeng'
        });
        user.save({
            uid:1,
            username:'caopeng'
        },function(err,doc){
            if(err){
                res.end('Error');
                return next();
            } else {
                console.log(doc)//新增数据成功
                res.json({'result':'新增数据成功'});
            }
        });
        // res.json({'result':'无结果'});
    });
    /* 更新一条信息 */
    router.get("/update", (req, res) => {
        User.findOneAndUpdate(
        //   { _id: req.params.id },
            {username:'caopeng'},
          {
            $set: {
                username: '新的名字',
            }
          },
          {
            new: true
          }
        )
          .then(state => res.json(`${state}修改成功`))
          .catch(err => res.json(err));
    });
    /* 删除 */
    router.get("/delete", (req, res) => {
        // console.log(req.params.id);
        User.findOneAndRemove({
            // _id: req.params.id
            uid:1
        })
        .then(state => res.send(`${state.uid}删除成功`))
        .catch(err => res.json(err));
    });
    
  • 相关阅读:
    漫谈 IP 协议
    Git常用组合操作
    my questions of C#
    关于C#多态的思考
    设计模式:示例与思考
    C#环境搭建,以及C#编译器的使用
    网络模型和TCP协议族
    Understanding TCP/IP Network Stack
    Get on the CORBA
    Introduction to COBRA
  • 原文地址:https://www.cnblogs.com/NB-JDzhou/p/13717534.html
Copyright © 2020-2023  润新知