这个方法,node,express,koa连接MongoDB都是一样的方法,我们利用mongoose模块来连接
关于连接mysql看这篇文章 : koa,express,node 通用方法连接MySQL
这里只是简单列一下连接MongoDB的结构,其实要真正懂MongoDB,还需要很多知识点,比如MongoDB的数据类型,还有一些API操作
简单说一下MongoDB的结构
其他内容下次,分享,今天先连上😂
注意我的版本
这是我的目录
我的安装的依赖版本:
1 2 3 4 5
| "dependencies": { "koa": "^2.6.2", "mongoose": "^5.3.12", }`
|
1.连接MongoDB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| // db/db.js const mongoose = require('mongoose')
const DB_URL = 'mongodb://localhost:27017/local'
mongoose.connect(DB_URL)
mongoose.connection.on('connected',function() { console.log('Mongoose connection open to '+DB_URL); }); /** * 连接异常 error 数据库连接错误 */ mongoose.connection.on('error',function(err) { console.log('Mongoose connection error: '+ err); }); /** * 连接断开 disconnected 连接异常断开 */ mongoose.connection.on('disconnected',function() { console.log('Mongoose connection disconnected'); });
module.exports = mongoose `
|
2.设置需要操作的集合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| // db/index.js const mongoose = require('./db') const Schema = mongoose.Schema;
const ceshiSchema = new Schema({ title: String, body: String, date: Date });
const MyModel = mongoose.model('ceshi', ceshiSchema);
class Mongodb { constructor () {
} // 查询 query () { return new Promise((resolve, reject) => { MyModel.find({}, (err, res) => { if(err) { reject(err) } resolve(res) }) }) } // 保存 save (obj) { const m = new MyModel(obj) return new Promise((resolve, reject)=> { m.save((err, res) => { if (err) { reject(err) } resolve(res) console.log(res) }) }) } } module.exports = new Mongodb()
|
这里就简单举例了查询和保存方法,还是其他方法,可以具体去看文档
3.设置服务器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| // index.js const Koa = require('koa') const config = require('./config/default') const ModelDb = require('./db')
const app = new Koa()
app.use(async (ctx) => { let data = await ModelDb.query() ctx.body = data })
app.listen(config.port)
console.log(`listening on port ${config.port}`)
|
4.启动服务器
打开浏览器,就可以看的查询出来的结果
注意:前提在ceshi结合要有文档,也就是要有数据