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 相关文章推荐
PHPStorm 2020.1 调试 Nodejs的多种方法详解
Sep 17 NodeJs
轻松创建nodejs服务器(3):代码模块化
Dec 18 NodeJs
NodeJS制作爬虫全过程
Dec 22 NodeJs
ubuntu下安装nodejs以及升级的办法
May 08 NodeJs
nodejs基础应用
Feb 03 NodeJs
NodeJS测试框架mocha入门教程
Mar 28 NodeJs
nodejs个人博客开发第二步 入口文件
Apr 12 NodeJs
Nodejs之http的表单提交
Jul 07 NodeJs
详解IWinter 一个路由转控制器的 Nodejs 库
Nov 15 NodeJs
nodejs+mongodb+vue前后台配置ueditor的示例代码
Jan 02 NodeJs
nodejs简单访问及操作mysql数据库的方法示例
Mar 15 NodeJs
详解nodejs内置模块
May 06 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 str_pad 函数用法简介
2009/07/11 PHP
php 类自动载入的方法
2015/06/03 PHP
Jquery.TreeView结合ASP.Net和数据库生成菜单导航条
2010/08/27 Javascript
Javascript 类型转换方法
2010/10/24 Javascript
jQuery控制图片的hover效果(smartRollover.js)
2012/03/18 Javascript
基于jquery实现的文字向上跑动类似跑马灯的效果
2014/06/17 Javascript
JS+CSS实现淡入式焦点图片幻灯切换效果的方法
2015/02/26 Javascript
jQuery常见面试题之DOM操作详析
2017/07/05 jQuery
React + webpack 环境配置的方法步骤
2017/09/07 Javascript
JavaScript实现计数器基础方法
2017/10/10 Javascript
BootStrap 标题设置跨行无效的解决方法
2017/10/25 Javascript
手动下载Chrome并解决puppeteer无法使用问题
2018/11/12 Javascript
node.js实现上传文件功能
2019/07/15 Javascript
深入理解令牌认证机制(token)
2019/08/22 Javascript
详解node和ES6的模块导出与导入
2020/02/19 Javascript
JavaScript的垃圾回收机制与内存管理
2020/08/06 Javascript
python输出当前目录下index.html文件路径的方法
2015/04/28 Python
在Linux系统上安装Python的Scrapy框架的教程
2015/06/11 Python
python 性能提升的几种方法
2016/07/15 Python
利用Python开发实现简单的记事本
2016/11/15 Python
python 获取网页编码方式实现代码
2017/03/11 Python
Puppeteer使用示例详解
2019/06/20 Python
Python实现密码薄文件读写操作
2019/12/16 Python
pytorch 自定义参数不更新方式
2020/01/06 Python
对CSS3选择器的研究(详解)
2016/09/16 HTML / CSS
纯CSS3实现手风琴风格菜单具体步骤
2013/05/06 HTML / CSS
CSS3+js实现简单的时钟特效
2015/03/18 HTML / CSS
html5 button autofocus 属性介绍及应用
2013/01/04 HTML / CSS
荷兰皇家航空公司中国官网:KLM中国
2017/12/13 全球购物
学期研究性学习个人的自我评价
2014/01/09 职场文书
2014年党员整改措施范文
2014/09/21 职场文书
党的群众路线教育实践活动整改方案
2014/10/28 职场文书
具结保证书
2015/01/17 职场文书
事业单位年度考核个人总结
2015/02/12 职场文书
丧事酒宴答谢词
2015/09/30 职场文书
win10忘记pin密码登录不了怎么办?win10忘记pin密码登不进去的解决方法
2022/07/07 数码科技