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中SSL服务的性能
Jul 15 NodeJs
nodejs和php实现图片访问实时处理
Jan 05 NodeJs
3分钟快速搭建nodejs本地服务器方法运行测试html/js
Apr 01 NodeJs
Windows下使用Nodejs运行js的方法
Sep 02 NodeJs
nodejs创建简易web服务器与文件读写的实例
Sep 07 NodeJs
Nodejs实现文件上传的示例代码
Sep 26 NodeJs
nodejs 图片预览和上传的示例代码
Sep 30 NodeJs
详解NodeJs开发微信公众号
May 25 NodeJs
nodejs分离html文件里面的js和css的方法
Apr 09 NodeJs
独立部署小程序基于nodejs的服务器过程详解
Jun 24 NodeJs
NodeJS 文件夹拷贝以及删除功能
Sep 03 NodeJs
nodejs处理tcp连接的核心流程
Feb 26 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 flv视频时间获取函数
2010/06/29 PHP
PHP程序员面试 切忌急功近利(更需要注重以后的发展)
2010/09/01 PHP
PHP中执行MYSQL事务解决数据写入不完整等情况
2014/01/07 PHP
PHP生成网站桌面快捷方式代码分享
2014/10/11 PHP
PHP转盘抽奖接口实例
2015/02/09 PHP
Firefox下提示illegal character并出现乱码的原因
2010/03/25 Javascript
使用隐藏的new来创建对象
2011/03/29 Javascript
javascript标签在页面中的位置探讨
2013/04/11 Javascript
js 处理数组重复元素示例代码
2013/12/27 Javascript
实用框架(iframe)操作代码
2014/10/23 Javascript
JavaScript插件化开发教程(五)
2015/02/01 Javascript
Javascript获取数组中的最大值和最小值的方法汇总
2016/01/01 Javascript
AngularJS 2.0入门权威指南
2016/10/08 Javascript
Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
2016/10/25 Javascript
使用jQuery的ajax方法向服务器发出get和post请求的方法
2017/01/13 Javascript
使用原生js+canvas实现模拟心电图的实例
2017/09/20 Javascript
利用nodeJs anywhere搭建本地服务器环境的方法
2018/05/12 NodeJs
vue-router中scrollBehavior的巧妙用法
2018/07/09 Javascript
vue使用Google地图的实现示例代码
2018/12/19 Javascript
浅谈Javascript常用正则表达式应用
2019/03/08 Javascript
Python实现从订阅源下载图片的方法
2015/03/11 Python
深入探究Python中变量的拷贝和作用域问题
2015/05/05 Python
Python使用django获取用户IP地址的方法
2015/05/11 Python
Python爬虫实现全国失信被执行人名单查询功能示例
2018/05/03 Python
python3+selenium自动化测试框架详解
2019/03/17 Python
详解Python time库的使用
2019/10/10 Python
python实现批量文件重命名
2019/10/31 Python
Python原始套接字编程实例解析
2020/01/29 Python
python 装饰器的使用示例
2020/10/10 Python
Python存储读取HDF5文件代码解析
2020/11/25 Python
日本面向世界,国际级的免税在线购物商城:DOKODEMO
2017/02/01 全球购物
百度JavaScript笔试题
2015/01/15 面试题
《雷雨》教学反思
2014/02/20 职场文书
师德演讲稿范文
2014/05/06 职场文书
培训科主任岗位职责
2014/08/08 职场文书
2016新教师培训心得体会范文
2016/01/08 职场文书