三好先森|Node.js 学习笔记:使用数据库( 二 )


三好先森|Node.js 学习笔记:使用数据库2. MongoDBMongoDB是非关系型数据库的一个典型代表 , 我们在这里用它来示范 Node.js 对关系型数据库的处理 。 在 Node.js 中操作MongoDB数据库有两个扩展包可以选择 , 下面我们一一来演示 。 首先 , 在code/06_database目录下执行mkdir mongodb命令 , 并执行以下步骤:
使用mongodb包

  1. 在code/06_database/mongodb目录下执行npm install mongodb命令 , 将mongodb包安装到当前示例项目中 。
  2. 为控制程序按串行方式执行 , 需在code/06_database/mongodb目录下执行npm install async命令 , 将async包安装到当前示例项目中 。
  3. 在code/06_database/mongodb目录下执行touch useMongodb.js , 创建一个脚本文件 , 具体如下:
const MongoClient = require('mongodb').MongoClientconst async = require('async')const server = 'mongodb://localhost:27017'const dbName = 'hrdb'const collName = 'hr_table'const dbPath = server + '/' + dbNameMongoClient.connect(dbPath, { useNewUrlParser: true },function(err, db) {if ( err !== null ) {return console.error('错误信息:' + err.message)}const dbo = db.db(dbName)console.log(dbName + '数据库创建成功')const collect = dbo.collection(collName)console.log(collName + '集合创建成功')async.series([// 控制程序串行执行function (callback) {// 插入单条数据const data = http://kandian.youth.cn/index/{name :'杨过',age : '42',sex : '男',items : '看书, 喝酒, 习武'}collect.insertOne(data, function(err, res) {if ( err !== null ) {return console.error('错误信息:' + err.message)}console.log('单条数据插入成功')})callback()},function (callback) {// 插入多条数据const dataArray = [{name : '小龙女',age : '24',sex : '男',items : '看书, 唱歌, 习武'},{name : '郭靖',age : '52',sex : '男',items : '看书, 喝酒, 习武'},{name : '黄蓉',age : '45',sex : '女',items : '看书, 绘画, 习武'},{name : '雅典娜',age : '24',sex : '女',items : '看书, 音乐, 被救'}]collect.insertMany(dataArray, function(err, res) {if ( err !== null ) {return console.error('错误信息:' + err.message)}console.log('数组插入成功')})callback()},function (callback) {// 列出所有数据collect. find({}).toArray(function(err, result) {if ( err !== null ) {return console.error('错误信息:' + err.message)}console.log('列出当前集合中的所有数据:')console.log(result)})callback()},function (callback) {// 更新单一数据const whereData = http://kandian.youth.cn/index/{'name' : '小龙女'}const updataValue = http://kandian.youth.cn/index/{ $set: {'sex' : '女' } }collect.updateOne(whereData, updataValue,function(err, res) {if ( err !== null ) {return console.error('错误信息:' + err.message)}console.log(whereData['name'] + "的数据更新成功")})callback()},function (callback) {// 查询指定数据const querystr = { 'name' : '小龙女' }collect. find(querystr).toArray(function(err, result) {if ( err !== null ) {return console.error('错误信息:' + err.message)}console.log('查看更新后的' + querystr['name'] + '的数据:')console.log(result)})callback()},function (callback) {// 删除指定单一数据const whereData = http://kandian.youth.cn/index/{'name' : '黄蓉' }collect.deleteOne(whereData,function(err, result) {if ( err !== null ) {return console.error('错误信息:' + err.message)}console.log(whereData['name'] + '的数据已被删除')})callback()},function (callback) {// 查询所有数据 , 并按name降序排列const isort = { name : -1 }collect. find({}).sort(isort).toArray(function(err, result) {if ( err !== null ) {return console.error('错误信息:' + err.message)}console.log('降序排列当前集合中的所有数据:')console.log(result)})callback()},function (callback) {// 删除指定多条数据const whereData = http://kandian.youth.cn/index/{'age' : '24' }collect.deleteMany(whereData,function(err, result) {if ( err !== null ) {return console.error('错误信息:' + err.message)}console.log('年龄为' + whereData['age'] + '的数据已被删除')})callback()},function (callback) {// 查询所有数据 , 并按name升序排列const isort = { name : 1 }collect. find({}).sort(isort).toArray(function(err, result) {if ( err !== null ) {return console.error('错误信息:' + err.message)}console.log('升序排列当前集合中的所有数据:')console.log(result)})callback()},function (callback) {// 删除指定集合dbo.dropCollection(collName, function(err, delOK) {if ( err !== null ) {return console.error('错误信息:' + err.message)}if ( delOK !== null ) {console.log(collName + "集合已删除!")}})callback()}])db.close()})


推荐阅读