nodejs web应用服务器搭建(三):业务的实现+mongo的基础使用详解编程语言
本章节主要是关注业务实现的,就是持久层数据的CURD操作,和业务处理。
资料:
mongoose 文档
其他章节链接:
nodejs web应用服务器搭建(一):跑起你的服务器
nodejs web应用服务器搭建(二):express 框架说明(应用)
nodejs web应用服务器搭建(三):业务的实现+mongo的基础使用
nodejs web应用服务器搭建(四):生产环境的搭建
mongoDB属于noSQL型(即非关系型的数据库)数据库,而mongoDB属于文档类型,使用的简易程度远超于传统数据库,所以前端转后端时可以以noSQL类型作为切入点,但传统数据库还是拥有非常大的优势的,技术选型还是需要根据具体业务来决定,毕竟 技术脱离业务 就一文不值了。接下来不过多介绍了,进入正题。
mongodb 的安装使用。首先先去mongoDB 官网,根据你的系统下载安装程序 传送门
1. 选择自定义安装
2.选择你需要安装的目录
安装完以后可以先查看一下环境变量,win + R ,输入CMD,命令行模式输入 path,确定是否存在 %你的mongoDB安装路径%/bin 改 地址,如果没有请在环境变量自行添加
3.创建你的数据目录
你可以在任意目录下创建你的数据目录,如 c:/data/db
4. 启动你的mongoDB
可以在命令台输入 mongod –port 10086 –dbpath 你的数据目录(如上述:c:/data/db)
如果出现下面信息,那就已经可以正常使用mongoDB了
2018-02-17T16:41:46.651+0800 I CONTROL [initandlisten] MongoDB starting : pid=13264 port=10086 dbpath=C:/data/db 64-bit host=surface-book 2018-02-17T16:41:46.652+0800 I CONTROL [initandlisten] targetMinOS: Windows Vista/Windows Server 2008 2018-02-17T16:41:46.653+0800 I CONTROL [initandlisten] db version v3.2.10 2018-02-17T16:41:46.653+0800 I CONTROL [initandlisten] git version: 79d9b3ab5ce20f51c272b4411202710a082d0317 2018-02-17T16:41:46.653+0800 I CONTROL [initandlisten] allocator: tcmalloc 2018-02-17T16:41:46.654+0800 I CONTROL [initandlisten] modules: none 2018-02-17T16:41:46.654+0800 I CONTROL [initandlisten] build environment: 2018-02-17T16:41:46.657+0800 I CONTROL [initandlisten] distarch: x86_64 2018-02-17T16:41:46.658+0800 I CONTROL [initandlisten] target_arch: x86_64 2018-02-17T16:41:46.659+0800 I CONTROL [initandlisten] options: { net: { port: 10086 }, storage: { dbPath: "C:/data/db" } } 2018-02-17T16:41:46.662+0800 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=4G,session_max=20000,eviction=(threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0), 2018-02-17T16:41:46.854+0800 I NETWORK [HostnameCanonicalizationWorker] Starting hostname canonicalization worker 2018-02-17T16:41:46.854+0800 I FTDC [initandlisten] Initializing full-time diagnostic data capture with directory C:/data/db/diagnostic.data 2018-02-17T16:41:46.895+0800 I NETWORK [initandlisten] waiting for connections on port 10086mongodb 的使用说明
你需要了解一下关于mongodb的操作,和数据库术语/概念
你可以访问该网站查阅相关操作 如何使用 传送门
关于mongoose一个JavaScript 的 mongoose ORM 库
mongoose 文档
express的业务中间件 mongo配置通过 mongoose 链接mongoDB,每次调用modal都会创建链接
// ./modal/config.js var mongoose = require(mongoose);//引入mongoose库 mongoose.connect(mongodb://localhost:10086/logs);//mongodb连接地址,demo为数据库名称,默认mongodb连接不需要密码 exports.mongoose = mongoose;//导出mongoose对象建立modal
基础modal 模块
// ./modal/base.js var mongodb = require(./config);//引入config中的mongodb对象 var mongoose = mongodb.mongoose;//获取mongoose var Schema = mongoose.Schema;//获取Schema,以便快捷使用 var ObjectId = Schema.Types.ObjectId;//获取ObjectId类型,以便快捷使用 exports.mongodb = mongodb;//导出mongodb exports.mongoose = mongoose; //导出mongoose exports.Schema = Schema;//导出Schema exports.ObjectId = ObjectId;//导出ObjectId exports.Mixed = Schema.Types.Mixed;//导出Mixed
日志modal
// ./modal/log.js var base = require(./Base); var ObjectId = base.ObjectId; var logScheme =new base.Schema({ host:{ type:String, required:true path:{ type:String, required:true msg:String, file:String, stack:String, userAgent:String, //date:String, createTime:{type:Date,default:Date.now}//创建时间 logScheme.index({createTime:1},{"background" : true});//设置索引 var logEntity = base.mongoose.model(logEntity,logScheme,logs);//指定在数据库中的collection名称为user exports.logEntity = logEntity;//导出实体mongoose的应用
路由中间件,处理 /logs 请求,此api功能为,日志记录查询
var express = require(express); var fs = require(fs); var router = express.Router(); var logEntity = require(../models/log).logEntity; router.use(/logs, function(req, res, next) { var count_per_page = 50, page = 1, start, end; if(req.method == GET){ page = req.query.page || 1 start = req.query.start || Date.now() - 7 * 24 * 3600 * 1000; end = req.query.end || Date.now(); }else if (req.method == POST){ page = req.body.page || 1 start = req.body.start || Date.now() - 7 * 24 * 3600 * 1000; end = req.body.end || Date.now(); res.header("Access-Control-Allow-Origin", "*"); res.header(Access-Control-Allow-Methods, GET,PUT,POST,DELETE); res.header(Access-Control-Allow-Headers, Content-Type); res.header(Access-Control-Allow-Credentials,true); logEntity.find({ createTime:{ "$gte": new Date(start), "$lt":new Date(end)}}) // $条件查询 .select(-_id host file stack createTime msg userAgent path) if (!error) { throw new Error(error) res.json(docs) });
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/11523.html
cgojavawindows相关文章
- 【NLP基础】英文关键词抽取RAKE算法
- Docker NodeJs 服务模板
- Windows下搭建NodeJS绿色版开发环境
- nodejs中事件循环中的执行顺序
- linuxnodejs安装及环境配置_nodejs不是内部外部命令
- Node.js学习笔记(四)——NodeJS访问MongoDB与MySQL数据库
- 在你的ios、android应用中嵌入官方版nodejs是什么感觉?
- nodejs升级到最新LTS版本方法汇总:linux/mac/window—npm/yum/ssh
- A lightweight open-source video cloud based on Nodejs, SRS, FFmpeg, WebRTC, etc.
- 手把手教你做爬虫—基于NodeJs详解编程语言
- Nodejs mongoose 详解编程语言
- 找到一个nodejs插件汇总的页面
- 我们的企业的信息管理:建立在Oracle Web的基础上(oracle web)
- nodejs中操作mysql数据库示例
- nodejs中实现路由功能
- NodeJS学习笔记之Connect中间件应用实例