mongoose介绍
Mongoose 是在 node.js 异步环境下对 mongodb 进行便捷操作的对象模型工具。Mongoose
是 NodeJS 的驱动,不能作为其他语言的驱动。
mongoose特点
通过关系型数据库的思想来设计非关系型数据库
基于mongodb驱动,简化操作
mongoose的安装和使用
安装
npm install mongoose
引入mongoose并连接数据库
新建一个目录创建一个js文件把mangoose引入进去,使用mongoose.connect()方法连接MongoDB,这是连接到本地数据库MySQL默认接口(27017)的最小配置,本地来连接失败可以尝试连接127.0.0.1,可以在url中指定多个参数
var mongoose=require('mongoose')
mongoose.connect('mongodb://127.0.0.1:27017/stu',function (err){
if(!err){
console.log('数据库连接成功')
}
})
module.exports=mongoose
定义Schema
数据库中的 Schema,为数据库对象的集合。schema 是 mongoose 里会用到的一种数据模式,可以理解为表结构的定义;每个 schema 会映射到 mongodb 中的一个 collection,它不具备操作数据库的能力。
var mongoose=require('./coon')
var Schema=mongoose.Schema
var userSchema=new Schema(
{
username:String,
pass:String,
tel:String
}
)
var User=mongoose.model('user',userSchema,'user');
module.exports=User
创建数据模型
定义好了 Schema,接下就是生成 Model。model 是由 schema 生成的模型,可以对数据库的操作。
注意:mongoose.model 里面可以传入两个参数也可以传入三个参数,如果传入 2 个参数的话:这个模型会和与模型名称相同的、名称为复数的集合建立连接。如果传入 3 个参数的话:模型默认操作与第三个参数同名的集合
var User=mongoose.model('user',userSchema,'user');
mongoose增删改查(后端简单增删改查)
增加
<body>
<form action="/zhuce" method="post">
<p>
<span>
用户名
</span>
<input type="text" name="username">
</p>
<p>
<span>
密码
</span>
<input type="text" name="pass">
</p>
<p>
<span>
电话
</span>
<input type="text" name="tel">
</p>
<p>
<input type="submit" value="提交">
</p>
</form>
</body>
//添加
router.post('/zhuce',function (req,res){
console.log(req.body);
userModel.create(req.body,function (err){
if(!err){
// res.send('注册成功')
res.redirect('/userlist')
}
})
})
查看
<body>
<table>
<thead>
<tr>
<th>username</th>
<th>pass</th>
<th>tel</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<% for (let i = 0; i < users.length;i++) { %>
<tr>
<td><%= users[i].username %></td>
<td><%= users[i].pass %></td>
<td><%= users[i].tel %></td>
<td><a href="/edituser?id=<%= users[i]._id %>">编辑 </a>
<a href="/del?id=<%= users[i]._id %>">删除</a>
</td>
</tr>
<% } %>
</tbody>
</table>
</body>
router.get('/userlist',async function (req,res){
const r=await userModel.find().exec()
console.log(r)
res.render('user',{'users':r})
})
修改
点击修改跳转到edit页面,并通过id来查找到与之对应的数据
<a href="/edituser?id=<%= users[i]._id %>">编辑 </a>
点击提交按钮提交修改后的数据
<body>
<h3>编辑页面</h3>
<form action="/update" method="post">
<p>
<span>
用户名
</span>
<input type="text" value="<%= user.username %>" name="username">
</p>
<p>
<span>
电话
</span>
<input type="text" value="<%= user.tel %>" name="tel">
</p>
<input type="hidden" name="id" value="<%= user._id %>">
<p>
<input type="submit" value="提交">
</p>
</form>
</body>
//点击编辑查看对应数据
router.get('/edituser',async function (req,res){
var user=await userModel.findById(req.query.id)
console.log(user)
res.render('edit',{user})
})
//编辑
router.post('/update',async function (req,res){
var d=req.body
console.log(d)
var r=await userModel.update({'_id':d.id},{$set:{'username':d.username,'tel':d.tel}}).exec()
res.redirect('/userlist')
})
删除
<a href="/del?id=<%= users[i]._id %>">删除</a>
//删除
router.get('/del',async function (req,res){
var r =await userModel.remove({'_id':req.query.id})
res.redirect('/userlist')
})