nodejs操作mongodb的填删改查模块的制作及引入实例


Posted in NodeJs onJanuary 02, 2018

安装相关模块

如果使用这个的话,你需要先自己安装一下他需要的模块,在根目录输入

npm install mongodb --save

进行模块安装,安装成功以后就可以进行以下的步骤。

文件的引入

以下是我书写的相关代码,放到你可以引用的相关目录,本人放到了express的根目录

function Mongo(options) {
 this.settings = {
  url: 'mongodb://localhost:27017/jk',
  MongoClient:require('mongodb').MongoClient,
  assert:require('assert')
 };
 for(let i in options){
  this.settings[i] = options[i];
 }
 this._run = function (fun) {
  let that = this;
  let settings = this.settings;
  this.settings.MongoClient.connect(this.settings.url, function (err, db) {
   settings.assert.equal(null, err);
   console.log("Connected correctly to server");
   fun(db, function () {
    db.close();
   });
  });
 };
 this.insert = function (collectionName, data, func) {
  //增加数据
  let insertDocuments = function (db, callback) {
   let collection = db.collection(collectionName);
   collection.insertMany([
    data
   ], function (err, result) {
    if (!err) {
     func(true);
    } else {
     func(false);
    }
    callback(result);
   });
  };
  this._run(insertDocuments);
 };
 this.update = function (collectionName, updateData, data, func) {
  //更新数据
  let updateDocument = function (db, callback) {
   let collection = db.collection(collectionName);
   collection.updateOne(updateData
    , {$set: data}, function (err, result) {
     if (!err) {
      func(true);
     } else {
      func(false);
     }
     callback(result);
    });
  };
  this._run(updateDocument);
 };
 this.delete = function (collectionName, data, func) {
  //删除数据
  let deleteDocument = function (db, callback) {
   let collection = db.collection(collectionName);
   collection.deleteOne(data, function (err, result) {
    if (!err) {
     func(true);
    } else {
     func(false);
    }
    callback(result);
   });
  };
  this._run(deleteDocument);
 };
 this.find = function (collectionName, data, func) {
  //查找数据
  let findDocuments = function (db, callback) {
   // Get the documents collection
   let collection = db.collection(collectionName);
   // Find some documents
   collection.find(data).toArray(function (err, docs) {
    if (!err) {
     func(true,docs);
    }
    else {
     func(false, err);
    }
    callback(docs);
   });
  };
  this._run(findDocuments);
 };
}
module.exports = Mongo;

我存入到了一个名字叫server.js的文件名内

使用

我们在需要使用页面先将模块引入,比如我在路由文件index.js里面引入:

const Server = require("../server.js");

然后需要实例化对象,如下:

let server = new Server();

如果需要配置相关信息,可以在实例化的时候传入一个对象配置,可以配置数据库的地址:

let server = new Server({url:"mongodb://localhost:27017/mydb"});

里面封装了四个方法,添删改查,分别是

添加方法

server.insert(数据表名,需要插入的数据(键值对的对象),回调函数);

更新方法

server.update(数据表名,查询的数据(对象),更新的数据(对象),回调函数);

删除方法

server.delete(数据表名,查询的数据(对象),回调函数);

查找方法

server.find(数据表名,查询的数据(对象),回调函数);

回调函数都会返回两个值,第一个布尔类型,是否处理成功,第二个值,查找返回查找到的个数,别的都返回处理成功的个数(现在一次只处理一条)

使用案例

比如我需要在一个路由里面查找数据,我就需要这样:

server.find("users",{username:"username"},function (bool,data) {
  if(bool){
   console.log("查询到数据为"+data.length+"条");
  }
  else{
   console.log(data);
  }
 });
});

上面的代码是查询了users表里面username为username的字段的数据,如果成功,后面data就会返回一个数组,如果出现错误,就直接返回data错误。

以上这篇nodejs操作mongodb的填删改查模块的制作及引入实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
基于NodeJS的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践
Sep 26 NodeJs
NodeJS学习笔记之Connect中间件应用实例
Jan 27 NodeJs
windows下安装nodejs及框架express
Aug 07 NodeJs
详解nodejs 文本操作模块-fs模块(二)
Dec 22 NodeJs
详解nodejs 文本操作模块-fs模块(三)
Dec 22 NodeJs
nodejs基础应用
Feb 03 NodeJs
nodejs个人博客开发第五步 分配数据
Apr 12 NodeJs
nodejs制作爬虫实现批量下载图片
May 19 NodeJs
NodeJS实现微信公众号关注后自动回复功能
May 31 NodeJs
webpack打包nodejs项目的方法
Sep 26 NodeJs
NodeJs入门教程之定时器和队列
Mar 08 NodeJs
nodejs和react实现即时通讯简易聊天室功能
Aug 21 NodeJs
nodejs实现OAuth2.0授权服务认证
Dec 27 #NodeJs
使用nodejs+express实现简单的文件上传功能
Dec 27 #NodeJs
nodejs超出最大的调用栈错误问题
Dec 27 #NodeJs
nodejs实现简单的gulp打包
Dec 21 #NodeJs
nodejs调取微信收货地址的方法
Dec 20 #NodeJs
基于nodejs实现微信支付功能
Dec 20 #NodeJs
nodeJS微信分享
Dec 20 #NodeJs
You might like
GBK的页面输出JSON格式的php函数
2010/02/16 PHP
php密码生成类实例
2014/09/24 PHP
PHP 文件上传限制问题
2019/09/01 PHP
JQUERY复选框CHECKBOX全选,取消全选
2008/08/30 Javascript
jQuery EasyUI API 中文文档 - ProgressBar 进度条
2011/09/29 Javascript
javascript 使用 NodeList需要注意的问题
2013/03/04 Javascript
JS幻灯片可循环播放可平滑旋转带滚动导航(自写)
2013/08/05 Javascript
javascript中alert()与console.log()的区别
2015/08/26 Javascript
JS获取数组最大值、最小值及长度的方法
2015/11/24 Javascript
angular.js之路由的选择方法
2016/09/24 Javascript
Angular 4根据组件名称动态创建出组件的方法教程
2017/11/01 Javascript
Bootstrap Table 搜索框和查询功能
2017/11/30 Javascript
详解create-react-app 自定义 eslint 配置
2018/06/07 Javascript
vue 自定义指令自动获取文本框焦点的方法
2018/08/25 Javascript
小程序如何在不同设备上自适应生成海报的实现方法
2019/08/20 Javascript
jQuery使用ajax传递json对象到服务端及contentType的用法示例
2020/03/12 jQuery
vue路由的配置和页面切换详解
2020/09/09 Javascript
[01:04]不如跳舞!DOTA2新英雄玛尔斯的欢乐日常
2019/03/11 DOTA
[56:13]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第一场 1月10日
2021/03/11 DOTA
Python连接MySQL并使用fetchall()方法过滤特殊字符
2016/03/13 Python
Python Flask基础教程示例代码
2018/02/07 Python
pandas 对每一列数据进行标准化的方法
2018/06/09 Python
使用Python将Mysql的查询数据导出到文件的方法
2019/02/25 Python
python输出第n个默尼森数的实现示例
2020/03/08 Python
Myprotein瑞士官方网站:运动营养和健身网上商店
2019/09/25 全球购物
linux面试题参考答案(2)
2015/12/06 面试题
专科毕业生就业推荐信
2013/11/01 职场文书
初一英语教学反思
2014/01/11 职场文书
电教室标语
2014/06/20 职场文书
设计专业毕业生求职信
2014/06/25 职场文书
安全目标责任书
2014/07/22 职场文书
电力培训心得体会
2014/09/02 职场文书
客房部经理岗位职责
2015/02/02 职场文书
2016社区平安家庭事迹材料
2016/02/26 职场文书
你离财务总监还有多远?速览CFO的岗位职责
2019/11/18 职场文书
python脚本框架webpy模板控制结构
2021/11/20 Python