nodejs操作mongodb的增删改查功能实例


Posted in NodeJs onNovember 09, 2017

本文实例讲述了nodejs操作mongodb的增删改查功能。分享给大家供大家参考,具体如下:

安装相关模块

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

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程序设计有所帮助。

NodeJs 相关文章推荐
抛弃Nginx使用nodejs做反向代理服务器
Jul 17 NodeJs
nodejs批量修改文件编码格式
Jan 22 NodeJs
nodejs中的fiber(纤程)库详解
Mar 24 NodeJs
Nodejs Stream 数据流使用手册
Apr 17 NodeJs
nodejs中解决异步嵌套循环和循环嵌套异步的问题
Jul 12 NodeJs
用nodejs实现json和jsonp服务的方法
Aug 25 NodeJs
nodejs实现OAuth2.0授权服务认证
Dec 27 NodeJs
nodejs 生成和导出 word的实例代码
Jul 31 NodeJs
nodejs 使用http进行post或get请求的实例(携带cookie)
Jan 03 NodeJs
用Electron写个带界面的nodejs爬虫的实现方法
Jan 29 NodeJs
nodejs实现获取本地文件夹下图片信息功能示例
Jun 22 NodeJs
NodeJS和浏览器中this关键字的不同之处
Mar 03 NodeJs
nodejs中art-template模板语法的引入及冲突解决方案
Nov 07 #NodeJs
Mac 安装 nodejs方法(图文详细步骤)
Oct 30 #NodeJs
浅谈NodeJs之数据库异常处理
Oct 25 #NodeJs
详解使用PM2管理nodejs进程
Oct 24 #NodeJs
nodejs中安装ghost出错的原因及解决方法
Oct 23 #NodeJs
详解Nodejs 通过 fs.createWriteStream 保存文件
Oct 10 #NodeJs
NodeJs通过async/await处理异步的方法
Oct 09 #NodeJs
You might like
zen_cart实现支付前生成订单的方法
2016/05/06 PHP
js电信网通双线自动选择技巧
2008/11/18 Javascript
jQuery 使用手册(七)
2009/09/23 Javascript
最新的10款jQuery内容滑块插件分享
2011/09/18 Javascript
用JQuery 判断某个属性是否存在hasAttr的解决方法
2013/04/26 Javascript
通过bootstrap全面学习less
2016/11/09 Javascript
BootStrap 可编辑表Table格
2016/11/24 Javascript
JS实现点击按钮可实现编辑功能
2018/07/03 Javascript
Vue监听数据渲染DOM完以后执行某个函数详解
2018/09/11 Javascript
vue router 源码概览案例分析
2018/10/09 Javascript
electron-vue利用webpack打包实现多页面的入口文件问题
2019/05/12 Javascript
Vue中fragment.js使用方法小结
2020/02/17 Javascript
Vue实现简单计算器案例
2020/02/25 Javascript
Vue+tracking.js 实现前端人脸检测功能
2020/04/16 Javascript
基于Echarts图表在div动态切换时不显示的解决方式
2020/07/20 Javascript
JS中循环遍历数组的四种方式总结
2021/01/23 Javascript
[55:03]LGD vs EG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
浅谈Python中数据解析
2015/05/05 Python
Python随机数random模块使用指南
2016/09/09 Python
python实现图片彩色转化为素描
2019/01/15 Python
举例讲解Python常用模块
2019/03/08 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
2019/10/30 Python
python做接口测试的必要性
2019/11/20 Python
Python基于QQ邮箱实现SSL发送
2020/04/26 Python
使用HTML5 Canvas绘制直线或折线等线条的方法讲解
2016/03/14 HTML / CSS
eBay奥地利站:eBay.at
2019/07/24 全球购物
意大利自行车商店:Cingolani Bike Shop
2019/09/03 全球购物
开发中都用到了那些设计模式?用在什么场合?
2014/08/21 面试题
简述索引存取方法的作用和建立索引的原则
2013/03/26 面试题
卫校毕业生自我鉴定
2013/10/31 职场文书
哈理工毕业生的求职信
2013/12/22 职场文书
初一家长会邀请函
2014/01/31 职场文书
教师暑期培训感言
2014/08/15 职场文书
小孩不笨观后感
2015/06/03 职场文书
Golang 使用Map实现去重与set的功能操作
2021/04/29 Golang
Kubernetes关键组件与结构组成介绍
2022/03/31 Servers