express+monogodb实现增删改查
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));
});