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访问ActiveX对象,以操作Access数据库为例。
Dec 15 NodeJs
nodejs读取memcache示例分享
Jan 02 NodeJs
nodejs中使用多线程编程的方法实例
Mar 24 NodeJs
Nodejs Express4.x开发框架随手笔记
Nov 23 NodeJs
搭建简单的nodejs http服务器详解
Mar 09 NodeJs
NodeJS基础API搭建服务器详细过程记录
Apr 01 NodeJs
nodejs连接mysql数据库简单封装示例-mysql模块
Apr 10 NodeJs
nodejs多版本管理总结
Apr 03 NodeJs
NodeJs搭建本地服务器之使用手机访问的实例讲解
May 12 NodeJs
Nodejs实现的操作MongoDB数据库功能完整示例
Feb 02 NodeJs
nodejs使用async模块同步执行的方法
Mar 02 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
丧钟首部独立剧集《丧钟:骑士与龙》北美正式开播,场面血腥
2020/04/09 欧美动漫
php Smarty date_format [格式化时间日期]
2010/03/15 PHP
解析PHP跳出循环的方法以及continue、break、exit的区别介绍
2013/07/01 PHP
PHP安全之register_globals的on和off的区别
2020/07/23 PHP
Javascript的一种模块模式
2008/03/22 Javascript
JavaScript入门教程(6) Window窗口对象
2009/01/31 Javascript
js表数据排序 sort table data
2009/02/18 Javascript
jquery 多级下拉菜单核心代码
2010/05/21 Javascript
基于jquery的高性能td和input切换并可修改内容实现代码
2011/01/09 Javascript
让js弹出窗口居前显示的实现方法
2013/07/10 Javascript
JavaScript中数组的合并以及排序实现示例
2015/10/24 Javascript
用js实现简单算法的实例代码
2016/09/24 Javascript
深入理解AngularJS中的ng-bind-html指令
2017/03/27 Javascript
jquery实现tab键进行选择后enter键触发click行为
2017/03/29 jQuery
Javascript创建类和对象详解
2017/05/31 Javascript
详解Vue.js之视图和数据的双向绑定(v-model)
2017/06/23 Javascript
浅谈在Vue-cli里基于axios封装复用请求
2017/11/06 Javascript
JS脚本加载后执行相应回调函数的操作方法
2018/02/28 Javascript
javascript(基于jQuery)实现鼠标获取选中的文字示例【测试可用】
2019/10/26 jQuery
原生javascript中this几种常见用法总结
2020/02/24 Javascript
Python提示[Errno 32]Broken pipe导致线程crash错误解决方法
2014/11/19 Python
Python map和reduce函数用法示例
2015/02/26 Python
python计算时间差的方法
2015/05/20 Python
详解Python import方法引入模块的实例
2017/08/02 Python
python palywright库基本使用
2021/01/21 Python
Araks官网:纽约内衣品牌
2020/10/15 全球购物
人事专员职责
2014/02/22 职场文书
同居协议书范本
2014/04/23 职场文书
个人校本研修方案
2014/05/26 职场文书
2015年复活节活动总结
2015/02/27 职场文书
领导干部失职检讨书
2015/05/05 职场文书
2015年党支部书记工作总结
2015/05/21 职场文书
利用Selenium添加cookie实现自动登录的示例代码(fofa)
2021/05/08 Python
写一个Python脚本下载哔哩哔哩舞蹈区的所有视频
2021/05/31 Python
浅析MongoDB之安全认证
2021/06/26 MongoDB
一文带你探究MySQL中的NULL
2021/11/11 MySQL