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实现PHP的print_r函数代码
Mar 14 NodeJs
14款NodeJS Web框架推荐
Jul 11 NodeJs
Nodejs Stream 数据流使用手册
Apr 17 NodeJs
nodejs搭建本地服务器并访问文件的方法
Mar 03 NodeJs
使用nodejs爬取前程无忧前端技能排行
May 06 NodeJs
windows系统下更新nodejs版本的方案
Nov 24 NodeJs
nodejs实现连接mongodb数据库的方法示例
Mar 15 NodeJs
nodejs 简单实现动态html的方法
May 12 NodeJs
Nodejs使用Mongodb存储与提供后端CRD服务详解
Sep 04 NodeJs
Nodejs中怎么实现函数的串行执行
Mar 02 NodeJs
nodejs+koa2 实现模仿springMVC框架
Oct 21 NodeJs
NodeJS配置CORS实现过程详解
Dec 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
php空间不支持socket但支持curl时recaptcha的用法
2011/11/07 PHP
php之XML转数组函数的详解
2013/06/07 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
2015/07/31 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
2016/11/22 PHP
PHP实现的贪婪算法实例
2017/10/17 PHP
javascript 模拟JQuery的Ready方法实现并出现的问题
2009/12/06 Javascript
基于jQuery选择器的整理集合
2013/04/26 Javascript
javascript利用apply和arguments复用方法
2013/11/25 Javascript
Node.js中的模块机制学习笔记
2014/11/04 Javascript
AngularJs 指令详解及示例代码
2016/09/01 Javascript
详解Vue2.x-directive的学习笔记
2017/07/17 Javascript
JS限制输入框输入的实现代码
2018/07/02 Javascript
JavaScript实现图片放大镜效果
2019/06/27 Javascript
layui多图上传实现删除功能的例子
2019/09/23 Javascript
JS实现盒子拖拽效果
2020/02/06 Javascript
python实现从字符串中找出字符1的位置以及个数的方法
2014/08/25 Python
Python比较两个图片相似度的方法
2015/03/13 Python
说一说Python logging
2016/04/15 Python
Python实现完整的事务操作示例
2017/06/20 Python
在java中如何定义一个抽象属性示例详解
2017/08/18 Python
Python 将RGB图像转换为Pytho灰度图像的实例
2017/11/14 Python
浅谈python脚本设置运行参数的方法
2018/12/03 Python
python实现代码统计程序
2019/09/19 Python
Python模块_PyLibTiff读取tif文件的实例
2020/01/13 Python
联想智利官方网站:Lenovo Chile
2020/06/03 全球购物
甜品店的创业计划书范文
2014/01/02 职场文书
开学典礼决心书
2014/03/11 职场文书
2014教师教育实践活动对照检查材料思想汇报
2014/09/21 职场文书
2014年环保工作总结
2014/11/26 职场文书
2014年物资管理工作总结
2014/12/02 职场文书
工作经历证明范本
2015/06/15 职场文书
大学班干部竞选稿
2015/11/20 职场文书
《静夜思》教学反思
2016/02/17 职场文书
测量JavaScript函数的性能各种方式对比
2021/04/27 Javascript
解析高可用Redis服务架构分析与搭建方案
2021/06/20 Redis
日本官方排名前10的动漫,名侦探柯南上榜,第一是一部创造历史的动漫
2022/03/18 日漫