zoukankan      html  css  js  c++  java
  • 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));
    });
    
  • 相关阅读:
    Python 日期格式化 及 schwartzian排序
    好的数据源
    董的博客 hadoop
    hadoop 2.2.0 集群部署 坑
    python 单元测试
    减少前端代码耦合
    jQuery $.ajax传递数组的traditional参数传递必须true
    如何做一个大格局的人
    中国各省市县级 JSON 文件
    用v-for进行table循环
  • 原文地址:https://www.cnblogs.com/NB-JDzhou/p/13717534.html
Copyright © 2011-2022 走看看