Node.js使用Express及Mongoose实现增删改查、分类查询、分页和排序功能

Node.js初学者,记录一下自己的学习笔记。比如我们要做一个草药的列表,首先新建草药的数据模型,在models文件夹下新建文件herbals.js。代码如下:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var herbalSchema = new Schema({
    "name": String,
    "herbalTypeId": String,
    "description": String,
    "cover": String,
    "details": String,
})

module.exports = mongoose.model('Herbal', herbalSchema);

然后在routes文件夹下新建文件herbals.js,连接MongoDB数据库:

var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var Herbals = require('../models/herbals');

//连接MongoDB数据库
mongoose.connect('mongodb://127.0.0.1:27017/herbal');

mongoose.connection.on('connected', function () {
    console.log('数据库连接成功');
})

mongoose.connection.on('error', function () {
    console.log('连接失败');
})

mongoose.connection.on('disconnected', function () {
    console.log('连接断开');
})

查询列表数据,按分类查询,分页,排序:

/**
 * 获取列表数据
 * 查询参数:herbalTypeId
 * 排序sort,1:升序 -1:降序
 */
router.get('/', function (req, res, next) {

    let pn = parseInt(req.param('pn'));
    let ps = parseInt(req.param('ps'));
    let herbalTypeId = req.param('herbalTypeId');
    let sort = parseInt(req.param('sort'));
    sort = 1; //1为升序,-1为降序
    let skip = (pn - 1) * ps;
    let params = {};

    if (herbalTypeId == 0 || herbalTypeId == '') {
        params = {};
    } else {
        params = {
            herbalTypeId: herbalTypeId,
        }
    }

    let herbalsModel = Herbals.find(params).skip(skip).limit(ps);

    // 默认sort为1
    herbalsModel.sort({
        'name': sort
    })

    /**
     * 先查了数据总数,再查对应页的数据,最后将页数返回
     */
    Herbals.find(params, function (err, doc) {
        if (err) {
            res.json({
                code: '1',
                message: err.message
            })
        } else {
            let count = doc.length;
            let pageCount = Math.ceil(count / ps);

            herbalsModel.exec(function (err, result) {
                if (err) {
                    res.json({
                        code: '1',
                        message: err.message
                    })
                } else {
                    res.json({
                        code: '0',
                        message: '',
                        data: {
                            pageCount: pageCount,
                            pageList: result,
                            pageNum: pn
                        }
                    })
                }
            })

        }
    })
})

添加:

/*添加*/
router.post('/', function (req, res, next) {

    let newHerbal = [{
        name: req.body.name,
        herbalTypeId: req.body.herbalTypeId,
        description: req.body.description,
        cover: req.body.cover,
        details: req.body.details,

    }];

    Herbals.create(newHerbal, function (err) {
        if (err) {
            res.json({
                code: '1',
                msg: err.message
            })
        } else {
            res.json({
                code: '0',
                msg: '添加成功',
                result: {}
            })
        }
    })
})

删除:

/*删除*/
router.delete('/', (req, res, next) => {

    Herbals.remove({_id: req.body.id}, function (err, result) {
        if (err) {
            res.json({
                code: '1',
                msg: err.message
            })
        } else {
            res.json({
                code: '0',
                msg: '删除成功',
                result: {}
            })
        }
    })
})

根据ID查找详情:

/*根据ID查找详情*/
router.get('/detail/', (req, res, next) => {

    var id = req.param('id');

    Herbals.find({_id: id}, function (err, doc) {
        if (err) {
            res.json({
                code: '1',
                msg: err.message
            })
        } else {
            res.json({
                code: '0',
                msg: '',
                result: doc[0]
            })
        }
    })
})

修改:

/*修改*/
router.put('/', (req, res, next) => {

    var condiction = {_id: req.body.id};
    var query = {
        $set: {
            name: req.body.name,
            herbalTypeId: req.body.herbalTypeId,
            description: req.body.description,
            cover: req.body.cover,
            details: req.body.details,
        }
    }

    Herbals.update(condiction, query, (err, result) => {
        if (err) {
            res.json({
                code: '1',
                msg: err.message
            })
        } else {
            res.json({
                code: '0',
                msg: '',
                result: {}
            })
        }
    })
})

最后,别忘了:

module.exports = router;

初学者,希望慢慢进步!

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值