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 相关文章推荐
nodejs简单实现中英文翻译
May 04 NodeJs
NodeJs中的VM模块详解
May 06 NodeJs
Nodejs中解决cluster模块的多进程如何共享数据问题
Nov 10 NodeJs
nodeJS删除文件方法示例
Dec 25 NodeJs
nodejs实例解析(输出hello world)
Jan 03 NodeJs
Nodejs 获取时间加手机标识的32位标识实现代码
Mar 07 NodeJs
详解nodejs中的process进程
Mar 19 NodeJs
nodejs个人博客开发第七步 后台登陆
Apr 12 NodeJs
NodeJS简单实现WebSocket功能示例
Feb 10 NodeJs
深入理解NodeJS 多进程和集群
Oct 17 NodeJs
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
Feb 02 NodeJs
NodeJS模块Buffer原理及使用方法解析
Nov 11 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
PHP四大安全策略
2014/03/12 PHP
Yii扩展组件编写方法实例分析
2015/06/29 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
javawscript 三级菜单的实现原理
2009/07/01 Javascript
jquery 提交值不为空的元素示例代码
2013/05/10 Javascript
jQuery多项选项卡的实现思路附样式及代码
2014/06/03 Javascript
jQuery html()方法使用不了无法显示内容的问题
2014/08/06 Javascript
如何减少浏览器的reflow和repaint
2015/02/26 Javascript
利用transition实现文字上下抖动的效果
2017/01/21 Javascript
jquery版轮播图效果和extend扩展
2017/07/18 jQuery
JavaScript阻止表单提交方法(附代码)
2017/08/15 Javascript
JavaScript文件的同步和异步加载的实现代码
2017/08/19 Javascript
jQuery EasyUI window窗口使用实例代码
2017/12/25 jQuery
Jquery的Ajax技术使用方法
2019/01/21 jQuery
使用Vue 实现滑动验证码功能
2019/06/27 Javascript
Nest.js散列与加密实例详解
2021/02/24 Javascript
[00:27]DOTA2荣耀之路2:Patience from zhou!
2018/05/24 DOTA
Python聚类算法之基本K均值实例详解
2015/11/20 Python
浅谈Python peewee 使用经验
2017/10/20 Python
python统计字母、空格、数字等字符个数的实例
2018/06/29 Python
Selenium定位元素操作示例
2018/08/10 Python
python opencv 读取本地视频文件 修改ffmpeg的方法
2019/01/26 Python
Python使用指定字符长度切分数据示例
2019/12/05 Python
python序列化与数据持久化实例详解
2019/12/20 Python
python利用google翻译方法实例(翻译字幕文件)
2020/09/21 Python
REISS英国官网:伦敦High Street最受欢迎品牌
2016/12/21 全球购物
skyn ICELAND官网:冰岛成分天然护肤品
2020/08/24 全球购物
劳动工资科岗位职责范本
2014/03/02 职场文书
医学生职业生涯规划书范文
2014/03/13 职场文书
2014年关于两会精神的心得体会
2014/03/17 职场文书
教师党员学习群众路线心得体会
2014/11/04 职场文书
少先队辅导员事迹材料
2014/12/24 职场文书
鲁迅故里导游词
2015/02/05 职场文书
党员自我评价范文2015
2015/03/03 职场文书
详解Vue中$props、$attrs和$listeners的使用方法
2022/02/18 Vue.js
解决MySQL Varchar 类型尾部空格的问题
2022/04/06 MySQL