mongoose操作mongodb
mongoose 库 操作mongodb
好处:解决原生mongo 对于 字段不做任何验证问题
安装
npm i mongoose -S
连接
model
connect.js 连接代码 直接在app.js中引入即可
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/demo',{
useNewUrlParser:true,
useUnifiedTopology:true
});
const db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
// we're connected!
console.log('mongodb连接成功了')
});
//连接成功之后,这个文件就不需要动了,直接将文件引入到app.js
require('./model/connect')
stu.js
const mongoose = require('mongoose')
// 1.先创建 schema (集合) 结构
const stuSchema = new mongoose.Schema({
name:{
type: String,
required: true
},
age:{
type:Number,
required:true
},
gender:{
type:Number,
default:1
}
})
// 2.创建表 表名 如果有 前缀使用_连接,建议 复数形式
const stuModel = mongoose.model('qf_stus', stuSchema)
//3.然后可以在homs.js中使用代码进行增删改查操作
stuModel.insertMany(object/arr).then().catch()
.remove({}).then().catch()
update({}).then()
find().then()
findOne().then()
count() 查询数量
和insertMany一起使用
limit
skip
sort
//4.将数据传输给home.js用于渲染,
module.exports = stuModel
//例:
stuModel.insertMany([
{
name:小明,
age:18
},
{
name:小华,
age:16
},
{
name:小红,
age:20,
gender:0
}
],(err,doc)=>{
console.log(err);
})
home.js
const router = require('express').Router();
const stuModel = require('../model/stu.js');
router.get("/home",(req,res)=>{
/*stuModel.find({},(err,docs)=>{
console.log(docs);
}) 获取全部数据,打印出来*/
// 取数据ES6:已经封装好了promise,成功调用then,失败调用catch
/* stuModel.find({}).then(res=>{
console.log(res)
}).catch(err=>{
}) */
//解决回调地狱
//ES7语法:async关键字:用来修饰一个函数,在函数前加,await关键字必须用在async修饰的函数内,使函数变为异步函数,等待promise成功的结果,再执行,使用变量接收
let re = await stuModel.find({});
console.log(re)
res.render('home',{
stus: re
})
})
module.exports = router
home.ejs 中可以渲染数据
<% for(var i=0;i<stus.length;i++){ %>
<div>
姓名<h4><%= stus[i].name %></h4>
年级<p> <%= stus[i].age %> </p>
性别<p> <%= stus[i].gender?'男':'女' %> </p>
</div>
<% } %>