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教程之入门
Nov 21 NodeJs
nodejs实现获取某宝商品分类
May 28 NodeJs
使用DNode实现php和nodejs之间通信的简单实例
Jul 06 NodeJs
Nodejs中的this详解
Mar 26 NodeJs
3分钟快速搭建nodejs本地服务器方法运行测试html/js
Apr 01 NodeJs
Nodejs+express+ejs简单使用实例代码
Sep 18 NodeJs
详解Nodejs 通过 fs.createWriteStream 保存文件
Oct 10 NodeJs
nodejs实现连接mongodb数据库的方法示例
Mar 15 NodeJs
nodejs log4js 使用详解
May 31 NodeJs
nodejs文件夹深层复制功能
Sep 03 NodeJs
在nodejs中创建child process的方法
Jan 26 NodeJs
Nodejs 数组的队列以及forEach的应用详解
Feb 25 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输入流php://input实例讲解
2015/12/22 PHP
thinkphp3.x中变量的获取和过滤方法详解
2016/05/20 PHP
php 自定义错误日志实例详解
2016/11/12 PHP
PHP开发的微信现金红包功能示例
2017/06/29 PHP
javascript的事件描述
2006/09/08 Javascript
JavaScript 函数调用规则
2009/09/14 Javascript
Jquery练习之表单验证实现代码
2010/12/14 Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
2015/02/20 Javascript
javascript中checkbox使用方法实例演示
2015/11/19 Javascript
JavaScript核心语法总结(推荐)
2016/06/02 Javascript
JS/jQ实现免费获取手机验证码倒计时效果
2016/06/13 Javascript
jQuery基本选择器和层次选择器学习使用
2017/02/27 Javascript
Bootbox将后台JSON数据填充Form表单的实例代码
2018/09/10 Javascript
React路由鉴权的实现方法
2019/09/05 Javascript
vue element upload组件 file-list的动态绑定实现
2019/10/11 Javascript
vue大型项目之分模块运行/打包的实现
2020/09/21 Javascript
[01:33:14]LGD vs VP Supermajor 败者组决赛 BO3 第二场 6.10
2018/07/04 DOTA
Python装饰器基础详解
2016/03/09 Python
pyspark操作MongoDB的方法步骤
2019/01/04 Python
快速解决pyqt5窗体关闭后子线程不同时退出的问题
2019/06/19 Python
python接口调用已训练好的caffe模型测试分类方法
2019/08/26 Python
Python 使用元类type创建类对象常见应用详解
2019/10/17 Python
Python文件路径名的操作方法
2019/10/30 Python
pytorch 彩色图像转灰度图像实例
2020/01/13 Python
django在开发中取消外键约束的实现
2020/05/20 Python
python pyg2plot的原理知识点总结
2021/02/28 Python
CSS3实现红包抖动效果
2020/12/23 HTML / CSS
阿玛尼意大利官网:Armani意大利
2018/10/30 全球购物
Viking Direct爱尔兰:办公用品和家具
2019/11/21 全球购物
2014年大学庆元旦迎新年活动方案
2014/03/09 职场文书
优秀管理者事迹材料
2014/05/22 职场文书
实习班主任自我评价
2015/03/11 职场文书
起诉书格式范文
2015/05/20 职场文书
家装电话营销开场白
2015/05/29 职场文书
《称赞》教学反思
2016/02/17 职场文书
Vue监视数据的原理详解
2022/02/24 Vue.js