Express 项目中使用 Mongoose

本文介绍了如何在Express项目中集成Mongoose,包括创建config文件夹、配置mongoose.js、建立models文件夹、定义user模型,以及在routes和app.js中的相关设置。教程旨在提供清晰易懂的步骤,帮助初学者理解如何在Node.js项目中使用Mongoose操作MongoDB。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建好express 项目caoyuan

这里写图片描述

1、 建一个config文件夹并在里面创建一个config.js

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

2、 在config文件夹创建一个mongoose.js

var mongoose=require('mongoose');
var config=require('./config.js');           //引入config配置文件夹下的配置文件
module.exports=function(){                   //导出数据库模块
    var db=mongoose.connect(config.mongodb);   //创建数据库连接对象db
    require('../models/user.server.model.js')  //引入models文件夹下的user.server.model.js
    return db;
};

3、 建一个models文件夹并在里面创建一个user.server.model.js

var mongoose=require('mongoose');
var UserSchema=new mongoose.Schema({
    uid:Number,
    username:String,
    createTime:Date,
    lastLogin:Date
});
mongoose.model('User',UserSchema);

4、 在config文件夹创建一个mongoose.js

var express = require('express');
var router = express.Router();

var mongoose=require('mongoose');
var User=mongoose.model('User');

/* GET users listing. */
router.get('/', function(req, res, next) {
  res.send('respond with a resource');
});
router.get('/test',function(req,res,next){
    var user=new User({
        uid:1,
        username:'caopeng'
    });
    user.save(function(err){
        if(err){
            res.end('Error');
            return next();
        }
        User.find({},function(err,docs){
            if(err){
                console.log('Error:');
                return next();
            }
            res.json(docs);
        });
    });
});
module.exports = router;

5、 routes 下面的文件夹中user.js

var express = require('express');
var router = express.Router();

var mongoose=require('mongoose');  //引文mongoose模块
var User=mongoose.model('User');   //创建mongoose下model对象

/* GET users listing. */
router.get('/', function(req, res, next) {
  res.send('respond with a resource');
});

router.get('/test',function(req,res,next){   //创建路由
    var user=new User({
        uid:1,
        username:'caopeng'
    });
    user.save(function(err){
        if(err){
            res.end('Error');
            return next();
        }
        User.find({},function(err,docs){
            if(err){
                console.log('Error:');
                return next();
            }
            res.json(docs);
        });
    });
});
module.exports = router;

6、app.js

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

var mongoose=require('./config/mongoose.js');
var db=mongoose();


var routes = require('./routes/index');
var users = require('./routes/users');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', routes);
app.use('/users', users);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

// error handlers

// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
  app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
      message: err.message,
      error: err
    });
  });
}

// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
  res.status(err.status || 500);
  res.render('error', {
    message: err.message,
    error: {}
  });
});


module.exports = app;

未完成,待完善,要写一篇人人都看得懂的好贴子得费好大劲,截图注释

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曹渊说技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值