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教程之制作一个简单的文章发布系统
Nov 21 NodeJs
Nodejs学习笔记之Stream模块
Jan 13 NodeJs
Nodejs学习笔记之测试驱动
Apr 16 NodeJs
nodejs如何获取时间戳与时间差
Aug 03 NodeJs
NodeJs读取JSON文件格式化时的注意事项
Sep 25 NodeJs
NodeJS整合银联网关支付(DEMO)
Nov 09 NodeJs
NodeJS实现微信公众号关注后自动回复功能
May 31 NodeJs
nodejs 图片预览和上传的示例代码
Sep 30 NodeJs
nodejs async异步常用函数总结(推荐)
Nov 17 NodeJs
nodejs发送http请求时遇到404长时间未响应的解决方法
Dec 10 NodeJs
nodejs中密码加密处理操作详解
Mar 20 NodeJs
nodejs语言实现验证码生成功能的示例代码
Oct 13 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
浅谈apache和nginx的rewrite的区别
2013/02/22 PHP
php curl_init函数用法
2014/01/31 PHP
php使用NumberFormatter格式化货币的方法
2015/03/21 PHP
Yii2下点击验证码的切换实例代码
2017/03/14 PHP
PHP Swoole异步读取、写入文件操作示例
2019/10/24 PHP
javascript instanceof,typeof的区别
2010/03/24 Javascript
jquery DOM操作 基于命令改变页面
2010/05/06 Javascript
浏览器的JavaScript引擎的识别方法
2013/10/20 Javascript
jquery submit ie6下失效的原因分析及解决方法
2013/11/15 Javascript
前端必备神器 Snap.svg 弹动效果
2014/11/10 Javascript
Javascript基础教程之数据类型 (字符串 String)
2015/01/18 Javascript
JS HTML5拖拽上传图片预览
2016/07/18 Javascript
jQuery和CSS仿京东仿淘宝列表导航菜单
2017/01/04 Javascript
Extjs让combobox写起来简洁又漂亮
2017/01/05 Javascript
bootstrap 下拉多选框进行多选传值问题代码分析
2017/02/14 Javascript
微信小程序 实例开发总结
2017/04/26 Javascript
es7学习教程之Decorators(修饰器)详解
2017/07/21 Javascript
基于nodejs实现微信支付功能
2017/12/20 NodeJs
jQuery仿移动端支付宝键盘的实现代码
2018/08/15 jQuery
[03:04]DOTA2超级联赛专访ZSMJ “莫名其妙”的逆袭
2013/05/23 DOTA
[53:15]Mineski vs iG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python 字符串split的用法分享
2013/03/23 Python
Python实现爬取知乎神回复简单爬虫代码分享
2015/01/04 Python
Python实现DDos攻击实例详解
2019/02/02 Python
python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
2019/05/30 Python
canvas画布实现手写签名效果的示例代码
2019/04/23 HTML / CSS
海蓝之谜(LA MER)澳大利亚官方商城:全球高端奢华护肤品牌
2017/10/27 全球购物
西班牙在线宠物食品和配件商店:bitiba
2019/10/11 全球购物
高中学生评语大全
2014/04/25 职场文书
研究生导师推荐信
2014/09/06 职场文书
归元寺导游词
2015/02/06 职场文书
2015年社区统计工作总结
2015/04/21 职场文书
2015年个人招商工作总结
2015/04/25 职场文书
运动会通讯稿50字
2015/07/20 职场文书
感恩老师主题班会
2015/08/12 职场文书
《异世界四重奏》剧场版6月10日上映 PV视觉图原创角色发表
2022/03/20 日漫