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抓取html页面内容(推荐)
Aug 11 NodeJs
详解nodejs 文本操作模块-fs模块(三)
Dec 22 NodeJs
nodejs开发——express路由与中间件
Mar 24 NodeJs
nodejs实现邮件发送服务实例分享
Mar 29 NodeJs
Nodejs实现文件上传的示例代码
Sep 26 NodeJs
nodejs中安装ghost出错的原因及解决方法
Oct 23 NodeJs
浅谈NodeJs之数据库异常处理
Oct 25 NodeJs
Nodejs实现图片上传、压缩预览、定时删除功能
Oct 25 NodeJs
nodejs各种姿势断点调试的方法
Jun 18 NodeJs
nodejs使用Sequelize框架操作数据库的实现
Oct 21 NodeJs
nodejs中内置模块fs,path常见的用法说明
Nov 07 NodeJs
nodejs+express最简易的连接数据库的方法
Dec 23 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
example2.php
2006/10/09 PHP
php使用json_encode对变量json编码
2014/04/07 PHP
PHP ajax 异步执行不等待执行结果的处理方法
2015/05/27 PHP
PHP自动补全表单的两种方法
2017/03/06 PHP
yii2使用gridView实现下拉列表筛选数据
2017/04/10 PHP
调用js时ie6和ie7,ff的区别
2009/08/19 Javascript
Javascript合并表格中具有相同内容单元格示例
2013/08/11 Javascript
Javascript操作URL函数修改版
2013/11/07 Javascript
jQuery实现列表的全选功能
2015/03/18 Javascript
JavaScript判断undefined类型的正确方法
2015/06/30 Javascript
再谈JavaScript异步编程
2016/01/27 Javascript
JavaScript通过HTML的class来获取HTML元素的方法总结
2016/05/24 Javascript
jQuery1.9+中删除了live以后的替代方法
2016/06/17 Javascript
Bootstrap Table的使用总结
2016/10/08 Javascript
jQuery 实时保存页面动态添加的数据的示例
2017/08/14 jQuery
jQuery实现滚动效果
2017/11/17 jQuery
vue通过cookie获取用户登录信息的思路详解
2018/10/30 Javascript
小程序scroll-view安卓机隐藏横向滚动条的实现详解
2019/05/16 Javascript
基于JavaScript获取base64图片大小
2019/10/18 Javascript
Win10下Python环境搭建与配置教程
2016/11/18 Python
Python实现输出程序执行进度百分比的方法
2017/09/16 Python
Python探索之URL Dispatcher实例详解
2017/10/28 Python
python处理multipart/form-data的请求方法
2018/12/26 Python
Python模块、包(Package)概念与用法分析
2019/05/31 Python
python自动提取文本中的时间(包含中文日期)
2020/08/31 Python
基于IE10/HTML5 开发
2013/04/22 HTML / CSS
美国受欢迎的眼影品牌:BH Cosmetics
2016/10/25 全球购物
一个SQL面试题
2014/08/21 面试题
保荐人的岗位职责
2013/11/19 职场文书
档案接收函范文
2014/01/10 职场文书
策划创业计划书
2014/02/06 职场文书
创先争优一句话承诺
2014/05/29 职场文书
公司授权委托书样本
2014/09/15 职场文书
安全员岗位职责
2015/02/10 职场文书
面试分析分布式架构Redis热点key大Value解决方案
2022/03/13 Redis
讲解Python实例练习逆序输出字符串
2022/05/06 Python