nodejs+koa2.x+MongoDB入门实战教程(五)操作MongoDB数据库

258 阅读3分钟

不以风骚惊天下,偏以技术渡佳人。

大家好,我是奶挺老师,江湖人称莒巭萎(lvbuwei),嘿嘿嘿,我又来叨扰大家了。

本课程基于我前面的一篇课程,如果自己机器还没有安装MongoDB,那么请看下我的MongoDB安装教程

今天是个好日子,明天也是个好日子。。。他来了他来了,他带着诚意走来了,哈哈,我们终于把koa基础部分学习的差不多了,回顾一下,我们学习了koa启动、koa路由配置、模板引擎ejs、静态文件的引用等等。

但是有一个问题啊,就是不管我们把页面做的多么花哨,多么炫酷,我们页面中的数据是需要存到数据库中的,数据才是最值钱的,正所谓好看的皮囊千篇一律,有趣的灵魂万里挑一,这里数据库就是一个产品一个软件的灵魂,哎~~~我们不仅要能控制住自己的身体,也要控制自己的灵魂。

mongodb中间件

安装

npm install mongodb --save

mongodb文件目录新建

cd Desktop/code/koa2_demo
mkdir mongodb
cd mongodb
touch index.js

连接MongoDB数据库

index.js 添加如下代码

const MongoClient = require('mongodb').MongoClient //引入MongoClient实例
const url = 'mongodb://localhost:27017' //数据库连接地址
const dbName = 'koa' //数据库名称
//调用连接数据库connect方法
MongoClient.connect(url, (err,client) => {
	console.log("Connected successfully to server");
	const db = client.db(dbName);
	console.log(db)
	// db.close()
})

在运行index.js文件之前,我们需要先启动MongoDB数据库

启动本地MongoDB数据库和可视化工具

mongod --dbpath=/Users/yo/mongodb/data/db

图中红线圈出的部分为数据连接地址和端口

我们打开另一个终端窗口看看数据库是否启动成功

mongo

可以看到我们的数据库已经是启动成功了

接下来我们为了方便操作,为了大家易懂,我们启动可视化工具(如果基础好的同学也可以直接在命令行中输入命令来操作数据库啊)

这一步骤不会的请去看我的可视化安装教程

cd /Users/yo/mongodbClient/adminMongo
npm start

我们直接打开浏览器,在地址栏输入 http://localhost:1234

新建dbName=koa和collection=user

万事俱备了,我们射。。。,运行一下我们之前写的index.js,看看是否能够成功连接到我们自己的数据库

node index.js

耶耶耶。。。成功啦成功啦,我们成功啦,此时有没有lol五杀的感觉啊,反正我第一次是有的哦。

到这里我们利用mongodb中间件已经成功连接到了我们本地安装的MongoDB数据库了

操作MongoDB数据库

我们先在index.js中来操作数据库

事例

const MongoClient = require('mongodb').MongoClient //引入MongoClient实例
const url = 'mongodb://localhost:27017' //数据库连接地址
const dbName = 'koa' //数据库名称

//调用连接数据库connect方法
MongoClient.connect(url, (err, client) => {
	console.log("Connected successfully to server");
	const db = client.db(dbName);
	//新增数据
	db.collection('user').insertOne({
		'name': '张三',
		'age': 18,
		'sex': '男'
	}, (err, result) => {
		if (err) {
			console.log(err)
		}
		console.log('插入成功了' + result)
	})
	console.log(db)
	// db.close() //先注释掉,变为持续链接
})

保存代码,运行程序 控制台打印出了成功插入的信息

刷新浏览器,我们也可以看到数据已经成功添加了

各位同学们,是不是觉得特别神奇,嘿嘿其实一点都不神奇,代码比女朋友听话多了,你让她怎么样,她就怎么样,但是我们也发现了一个小问题啊,如果我们每做一次操作都要这样连接、然后操作数据库,那一个项目那么多请求,那么多I/O,代码耦合度太高了,而且都是重复的工作,这部分代码堆叠起来其实也挺可怕的。

那我们有没有更优雅的方式来编程呢?预知后事如何,且听下回分解。

个人格言: 花堪折时直须折 莫待无花空折枝。生死看淡,不服就干...