源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Node.js中使用mongoskin操作mongoDB实例

  • 时间:2020-09-03 14:58 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Node.js中使用mongoskin操作mongoDB实例
[b]一、废话[/b] 从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。 [b]二、几个需要说的概念[/b] (1)数据库:同关系数据库一样。 (2)集合: 关系数据库中的表。 (3)文档: 类比关系数据库的记录,实则是JSON对象。 (4)数据库设计:建议考虑NoSQL设计,抛弃关系数据的设计思想;其实NoSQL数据库设计博大精深,需要不断地在项目中实践。 (5)用户体系:每一个数据库都有自己的管理员,可以:
[u]复制代码[/u] 代码如下:
use dbname; db.addUser('root_1' , 'test');
(7)建议更改对外端口 (8)启动服务(这是win下,linux下稍作修改):
[u]复制代码[/u] 代码如下:
mongod --dbpath "XX\MongoDB\data\db" --logpath "XX\MongoDB\log\mongo.log" --logappend -auth --port 7868
[b]三、搭建mongodb开发基础设施[/b] (0) npm install mongoskin 安装mongoskin 这里不介绍Node.js安装、package等机制。 (1)创建配置文件 config.json
[u]复制代码[/u] 代码如下:
{     "dbname":"TEST",     "port": "7868",     "host": "127.0.0.1",     "username": "test",     "password": "test" }
(2)创建util相关类mongo.js :导出一个DB对象
[u]复制代码[/u] 代码如下:
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对象即可
[u]复制代码[/u] 代码如下:
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,因为需要一些状态表示成功和失败,后期可以拓展为验证码错误、短信验证错误、用户名错误等
[u]复制代码[/u] 代码如下:
module.exports = {     /*     * 成功状态     *     * */     success: {         status: 1,         message: 'OK'     },     /*     * 失败状态     *     * */     fail: {         status: 0,         message: 'FAIL'     },     /*     * 两次输入的密码不一致     * */     repeatPassword: {         status: 0,         message: '两次输入的密码不一致'     }  };
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部