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中Buffer模块详解
Jan 07 NodeJs
nodejs 整合kindEditor实现图片上传
Feb 03 NodeJs
实例详解Nodejs 保存 payload 发送过来的文件
Jan 14 NodeJs
nodeJS实现简单网页爬虫功能的实例(分享)
Jun 08 NodeJs
NodeJS自定义模块写法(详解)
Jun 27 NodeJs
NodeJs实现定时任务的示例代码
Dec 05 NodeJs
nodejs爬虫初试superagent和cheerio
Mar 05 NodeJs
nodeJs爬虫的技术点总结
May 13 NodeJs
webstorm中配置nodejs环境及npm的实例
May 15 NodeJs
nodejs更新package.json中的dependencies依赖到最新版本的方法
Oct 10 NodeJs
详解从NodeJS搭建中间层再谈前后端分离
Nov 13 NodeJs
nodejs使用node-xlsx生成excel的方法示例
Aug 22 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
Ha0k 0.3 PHP 网页木马修改版
2009/10/11 PHP
php将字符串随机分割成不同长度数组的方法
2015/06/01 PHP
Smarty实现页面静态化(生成HTML)的方法
2016/05/23 PHP
给大家分享几个常用的PHP函数
2017/01/15 PHP
PHP生成(支持多模板)二维码海报代码
2018/04/30 PHP
laravel 字段格式化 modle 字段类型转换方法
2019/09/30 PHP
CSS图片响应式 垂直水平居中
2015/08/14 Javascript
基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
2015/11/24 Javascript
关于javascript作用域的常见面试题分享
2017/06/18 Javascript
Webpack之tree-starking 解析
2018/09/11 Javascript
微信小程序开发的基本流程步骤
2019/01/31 Javascript
create-react-app使用antd按需加载的样式无效问题的解决
2019/02/26 Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
2019/12/01 Javascript
解决vuex刷新数据消失问题
2020/11/12 Javascript
[04:27]2014DOTA2国际邀请赛 NAVI战队官方纪录片
2014/07/21 DOTA
使用Python的PEAK来适配协议的教程
2015/04/14 Python
Python3实现带附件的定时发送邮件功能
2020/12/22 Python
使用pandas对两个dataframe进行join的实例
2018/06/08 Python
Django单元测试中Fixtures的使用方法
2020/02/26 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
2020/03/03 Python
Java多线程实现四种方式原理详解
2020/06/02 Python
用python给csv里的数据排序的具体代码
2020/07/17 Python
Python下使用Trackbar实现绘图板
2020/10/27 Python
详解python的变量缓存机制
2021/01/24 Python
python+opencv实现车道线检测
2021/02/19 Python
HTML5 3D书本翻页动画的实现示例
2019/08/28 HTML / CSS
FORZIERI澳大利亚站:全球顶级奢华配饰精品店
2016/12/31 全球购物
Notino意大利:购买香水和化妆品
2018/11/14 全球购物
瑞士最大的图书贸易公司:Orell Füssli
2019/12/28 全球购物
全球最大运动品牌的男装、女装和童装官方库存商:A&A Sports
2021/01/17 全球购物
JAVA的事件委托机制和垃圾回收机制
2014/09/07 面试题
实习自我鉴定范文
2013/10/30 职场文书
初中校园之声广播稿
2014/01/15 职场文书
工作骂脏话检讨书
2014/10/05 职场文书
教师学期个人总结
2015/02/11 职场文书
个人维稳承诺书
2015/05/04 职场文书