Node.js中使用mongoskin操作mongoDB实例
作者:bea
一、废话 从13年1月份接触mongodb进行开发,开发了旅游标签服务、微博标签检索系统、地图服务、web APP服务...使用MongoDB的场景从.NET、JAVA环境转到了node.js平台。越发觉Node.js和mongodb结合感觉的很好。感觉mongodb和node.js是天生的一对。的确,mongodb的客户端是JS的解析引擎。因此,选择mongodb和node.js做产品原型也是很nice的选择。网上,遇到网友询问mongodb的开发,选择哪个driver最好
一、废话
从13年1月份接触mongodb进行开发,开发了旅游标签服务、微博标签检索系统、地图服务、web APP服务...使用MongoDB的场景从.NET、JAVA环境转到了node.js平台。越发觉Node.js和mongodb结合感觉的很好。感觉mongodb和node.js是天生的一对。的确,mongodb的客户端是JS的解析引擎。因此,选择mongodb和node.js做产品原型也是很nice的选择。网上,遇到网友询问mongodb的开发,选择哪个driver最好,以前一直是使用原生的driver,但是写起来代码有很多需要注意的,比如连接的关闭操作等等...因此,在node.js开发环境下我这里推荐使用mongoskin。
二、几个需要说的概念
(1)数据库:同关系数据库一样。 (2)集合: 关系数据库中的表。 (3)文档: 类比关系数据库的记录,实则是JSON对象。 (4)数据库设计:建议考虑NoSQL设计,抛弃关系数据的设计思想;其实NoSQL数据库设计博大精深,需要不断地在项目中实践。 (5)用户体系:每一个数据库都有自己的管理员,可以:
代码如下:
use dbname; db.addUser('root_1' , 'test');
(7)建议更改对外端口
(8)启动服务(这是win下,linux下稍作修改):
代码如下:
mongod --dbpath "XXMongoDBdatadb" --logpath "XXMongoDBlogmongo.log" --logappend -auth --port 7868
三、搭建mongodb开发基础设施
(0) npm install mongoskin 安装mongoskin
这里不介绍Node.js安装、package等机制。
(1)创建配置文件 config.json
代码如下:
{
"dbname":"TEST",
"port": "7868",
"host": "127.0.0.1",
"username": "test",
"password": "test"
}
(2)创建util相关类mongo.js :导出一个DB对象
代码如下:
var mongoskin = require('mongoskin'),
config = require('./../config.json');
/* * @des:导出数据库连接模块 * */ module.exports = (function(){ var host = config.host, port = config.port, dbName = config.dbname, userName = config.username, password = config.password, str = 'mongodb://' + userName + ':' + password + '@' + host +':' + port+ '/' + dbName;
var option = { native_parser: true };
return mongoskin.db(str, option); })();
(3)构建CRUD的基础类:为了减少重复CURD代码,只需要传入相关的JSON对象即可
代码如下:
var db = require('./mongo.js'),
status = require('./status'),
mongoskin = require('mongoskin');
var CRUD = function(collection){ this.collection = collection; db.bind(this.collection); };
CRUD.prototype = { /* * @des: 创建一条记录 * @model: 插入的记录,JSON格式的model * @callback:回调,返回插入成功的记录或者失败信息 * * */ create: function(model, callback){ db[this.collection].save(model, function(err, item){ if(err) { return callback(status.fail); } item.status = status.success.status; item.message = status.success.message; return callback(item); }); },
/* * @des:读取一条记录 * @query:查询条件,Mongo查询的JSON字面量 * @callback:回调,返回符合要求的记录或者失败信息 * * */ read: function(query, callback){ db[this.collection].find(query).toArray(function(err, items){ if(err){ return callback(status.fail); } var obj = { status: status.success.status, message: status.success.message, items: items };
return callback(obj); }); }, /* * @des:更新一条记录 * @query:查询条件,Mongo查询的JSON字面量,此处为_id * @updateModel:需要更新的JSON格式的模型 * @callback:返回成功或者失败信息 * * */ update: function(query, updateModel, callback){ var set = {set: updateModel}; db[this.collection].update(query, set, function(err){ if(err){ return callback(status.fail); }else{ return callback(status.success); } }); },
/* * @des:删除一条记录 * @query:查询条件,Mongo查询的JSON字面量 * @callback:返回失败或者成功的信息 * * */ deleteData: function(query, callback){ db[this.collection].remove(query, function(err){ if(err){ return callback(status.fail); } return callback(status.success); }); } };
module.exports = CRUD;
(4)构建status.json,因为需要一些状态表示成功和失败,后期可以拓展为验证码错误、短信验证错误、用户名错误等
代码如下:
module.exports = {
/*
* 成功状态
*
* */
success: {
status: 1,
message: 'OK'
},
/* * 失败状态 * * */ fail: { status: 0, message: 'FAIL' },
/* * 两次输入的密码不一致 * */ repeatPassword: { status: 0, message: '两次输入的密码不一致' } };
有用 | 无用
从13年1月份接触mongodb进行开发,开发了旅游标签服务、微博标签检索系统、地图服务、web APP服务...使用MongoDB的场景从.NET、JAVA环境转到了node.js平台。越发觉Node.js和mongodb结合感觉的很好。感觉mongodb和node.js是天生的一对。的确,mongodb的客户端是JS的解析引擎。因此,选择mongodb和node.js做产品原型也是很nice的选择。网上,遇到网友询问mongodb的开发,选择哪个driver最好,以前一直是使用原生的driver,但是写起来代码有很多需要注意的,比如连接的关闭操作等等...因此,在node.js开发环境下我这里推荐使用mongoskin。
二、几个需要说的概念
(1)数据库:同关系数据库一样。 (2)集合: 关系数据库中的表。 (3)文档: 类比关系数据库的记录,实则是JSON对象。 (4)数据库设计:建议考虑NoSQL设计,抛弃关系数据的设计思想;其实NoSQL数据库设计博大精深,需要不断地在项目中实践。 (5)用户体系:每一个数据库都有自己的管理员,可以:
代码如下:
use dbname; db.addUser('root_1' , 'test');
(7)建议更改对外端口
(8)启动服务(这是win下,linux下稍作修改):
代码如下:
mongod --dbpath "XXMongoDBdatadb" --logpath "XXMongoDBlogmongo.log" --logappend -auth --port 7868
三、搭建mongodb开发基础设施
(0) npm install mongoskin 安装mongoskin
这里不介绍Node.js安装、package等机制。
(1)创建配置文件 config.json
代码如下:
{
"dbname":"TEST",
"port": "7868",
"host": "127.0.0.1",
"username": "test",
"password": "test"
}
(2)创建util相关类mongo.js :导出一个DB对象
代码如下:
var mongoskin = require('mongoskin'),
config = require('./../config.json');
/* * @des:导出数据库连接模块 * */ module.exports = (function(){ var host = config.host, port = config.port, dbName = config.dbname, userName = config.username, password = config.password, str = 'mongodb://' + userName + ':' + password + '@' + host +':' + port+ '/' + dbName;
var option = { native_parser: true };
return mongoskin.db(str, option); })();
(3)构建CRUD的基础类:为了减少重复CURD代码,只需要传入相关的JSON对象即可
代码如下:
var db = require('./mongo.js'),
status = require('./status'),
mongoskin = require('mongoskin');
var CRUD = function(collection){ this.collection = collection; db.bind(this.collection); };
CRUD.prototype = { /* * @des: 创建一条记录 * @model: 插入的记录,JSON格式的model * @callback:回调,返回插入成功的记录或者失败信息 * * */ create: function(model, callback){ db[this.collection].save(model, function(err, item){ if(err) { return callback(status.fail); } item.status = status.success.status; item.message = status.success.message; return callback(item); }); },
/* * @des:读取一条记录 * @query:查询条件,Mongo查询的JSON字面量 * @callback:回调,返回符合要求的记录或者失败信息 * * */ read: function(query, callback){ db[this.collection].find(query).toArray(function(err, items){ if(err){ return callback(status.fail); } var obj = { status: status.success.status, message: status.success.message, items: items };
return callback(obj); }); }, /* * @des:更新一条记录 * @query:查询条件,Mongo查询的JSON字面量,此处为_id * @updateModel:需要更新的JSON格式的模型 * @callback:返回成功或者失败信息 * * */ update: function(query, updateModel, callback){ var set = {set: updateModel}; db[this.collection].update(query, set, function(err){ if(err){ return callback(status.fail); }else{ return callback(status.success); } }); },
/* * @des:删除一条记录 * @query:查询条件,Mongo查询的JSON字面量 * @callback:返回失败或者成功的信息 * * */ deleteData: function(query, callback){ db[this.collection].remove(query, function(err){ if(err){ return callback(status.fail); } return callback(status.success); }); } };
module.exports = CRUD;
(4)构建status.json,因为需要一些状态表示成功和失败,后期可以拓展为验证码错误、短信验证错误、用户名错误等
代码如下:
module.exports = {
/*
* 成功状态
*
* */
success: {
status: 1,
message: 'OK'
},
/* * 失败状态 * * */ fail: { status: 0, message: 'FAIL' },
/* * 两次输入的密码不一致 * */ repeatPassword: { status: 0, message: '两次输入的密码不一致' } };
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- Javascript基础知识(二)事件
- Javascript基础知识(一)核心基础语法与事件模型
- Javascript表单验证要注意的事项
- 使用phantomjs进行网页抓取的实现代码
- Javascript获取CSS伪元素属性的实现代码
- js获取元素相对窗口位置的实现代码
- Internet Explorer 11 浏览器介绍:别叫我IE
- 浏览器缩放检测的js代码
- 排序算法的javascript实现与讲解(99js手记)
- Javascript中封装window.open解决不兼容问题
- jQuery固定浮动侧边栏实现思路及代码
- js文件包含的几种方式介绍
- javascript中bind函数的作用实例介绍
- js和jquery如何获取图片真实的宽度和高度
- 一个jquery实现的不错的多行文字图片滚动效果
- IE中getElementsByName()对有些元素无效的解决方案
- js propertychange和oninput事件
- javascript检测是否联网的实现代码
- javascript检测浏览器的缩放状态实现代码