用dw做简单图片网站,网站建设查询,做网站都需要哪些软件,具有口碑的柳州网站建设哪家好安装安装MongoDBnpm install mongodb --save引入中间件引入mongodb下面的连接模块MongoClient// 引入MongoDB 连接模块const MongoClient MongoDB.MongoClient;配置中间件定义数据库连接的地址以及配置数据库的名称let url mongodb://localhost:27017/;let dbNam…安装安装MongoDBnpm install mongodb --save引入中间件引入mongodb下面的连接模块MongoClient// 引入MongoDB 连接模块const MongoClient MongoDB.MongoClient;配置中间件定义数据库连接的地址以及配置数据库的名称let url mongodb://localhost:27017/;let dbName koa;连接数据库nodejs连接数据库MongoClient.connect(url,(err,client){if(err){console.log(err);return false;}let db client.db(dbName); //数据库db对象});操作数据库MongoClient.connect(url,(err,client){if(err){console.log(err);return false;}let db client.db(dbName); //数据库db对象db.collection(user).insertOne({name:张三}, function(err, result){if(!err){console.log(数据增加成功);clinet.close(); //关闭连接}});let cx db.collection(user).find({});cx.toArray((err,docs){console.log(docs);});});封装MongoDB库优化【连接数据库】和【操作数据库】操作最终会有两个文件一个是 MongoDB配置文件MongoDB.config.js和一个是MongoDB封装文件MongoDB.db.js。MongoDB.config.js文件// MongoDB数据库配置文件const app {// 定义数据库地址dbUrl : mongodb://localhost:27017/,// 定义数据库名字dbName : koa};module.exports app;MongoDB.db.js文件/*封装DB库操作*/// 引入MongoDB 模块const MongoDB require(mongodb);// 引入MongoDB 连接模块const MongoClient MongoDB.MongoClient;// 引入MongoDB ObjectID模块const ObjectID MongoDB.ObjectID;// 引入配置文件const Config require(./MongoDB.config.js);class Db {// 单例模式解决多次实例化时候每次创建连接对象不共享的问题实现共享连接数据库状态static getInstance() {if (!Db.instance) {Db.instance new Db();}return Db.instance;}constructor() {// 属性 存放db对象this.dbClient ;// 实例化的时候就连接数据库增加连接数据库速度this.connect();}// 连接数据库connect() {return new Promise((resolve, reject) {// 解决数据库多次连接的问题要不然每次操作数据都会进行一次连接数据库的操作比较慢if (!this.dbClient) {// 第一次的时候连接数据库MongoClient.connect(Config.dbUrl, (err, client) {if (err) {reject(err);} else {// 将连接数据库的状态赋值给属性保持长连接状态this.dbClient client.db(Config.dbName);resolve(this.dbClient);}});} else {// 第二次之后直接返回dbClientresolve(this.dbClient);}});}/*** 查询数据库* 使用方法 let result await DB.find(user,{});* param {String} collectionName 集合名称、数据表名* param {Object} json 查询的条件*/find(collectionName, json) {return new Promise((resolve, reject) {this.connect().then((db) {// 操作db库里的某一个表返回符合条件的内容json查找的条件let result db.collection(collectionName).find(json);result.toArray(function (err, docs) {if (err) {reject(err);return;}resolve(docs);});});});}/*** 更新数据库* 使用方法 let result await DB.update(user,{username:lisi},{username:李四});* param {String} collectionName 集合名称、数据表名* param {Object} json1 需要更新数据的条件* param {Object} json2 新数据的内容*/update(collectionName, json1, json2) {return new Promise((resolve, reject) {this.connect().then((db) {// 操作db库里的某一个表更新一条数据json1查找的内容json2更新的新内容回调函数db.collection(collectionName).updateOne(json1,{$set: json2,},(err, result) {if (err) {reject(err);} else {resolve(result);}});});});}/*** 插入数据库* 使用方法 let result await DB.insert(user,{username:赵六666,age:30,sex:女,status:2});* param {String} collectionName 集合名称、数据表名* param {Object} json 插入的新数据*/insert(collectionName, json) {return new Promise((resolve, reject) {this.connect().then((db) {// 操作db库里的某一个表插入一条数据json插入的新内容回调函数db.collection(collectionName).insertOne(json, (err, result) {if (err) {reject(err);} else {resolve(result);}});});});}/*** 批量插入数据库* 使用方法 let result await DB.insert(user,[{username:赵六666,age:30,sex:女,status:2},{username:赵六666,age:30,sex:女,status:2},{username:赵六666,age:30,sex:女,status:2}...]);* param {String} collectionName 集合名称、数据表名* param {Array} json 批量插入的新数据*/insertMany(collectionName, arr) {return new Promise((resolve, reject) {this.connect().then((db) {// 操作db库里的某一个表批量插入一组数据arr批量插入的新内容回调函数db.collection(collectionName).insertMany(arr, (err, result) {if (err) {reject(err);} else {resolve(result);}});});});}/*** 删除数据* 使用方法 let result await DB.remove(user,{username:李四});* param {String} collectionName 集合名称、数据表名* param {Object} json 删除数据的条件*/remove(collectionName, json) {return new Promise((resolve, reject) {this.connect().then((db) {db.collection(collectionName).removeOne(json, (err, result) {if (err) {reject(err);} else {resolve(result);}});});});}/*** 通过id查询数据时候需要用到此方法MongoDB里面查询_id 把字符串转换成对象* MongoDB数据库里的_id是自动生成的通过dind方法查询结果可以看到形式如 {_id: ObjectId(5aad299bc166236421c99d229)},直接传入5aad299bc166236421c99d229是查询不到结果的所以需要包装一下* 使用方法 let result await DB.find(user,{_id: DB.getObjectID(xxxxx)});* param {String} id 要查询的id*/getObjectID(id) {return new ObjectID(id);}}module.exports Db.getInstance();