zl程序教程

您现在的位置是:首页 >  后端

当前栏目

nodejs web应用服务器搭建(三):业务的实现+mongo的基础使用详解编程语言

Nodejs基础Web编程语言 实现 使用 详解 搭建
2023-06-13 09:20:35 时间

本章节主要是关注业务实现的,就是持久层数据的CURD操作,和业务处理。
资料:
mongoose 文档
其他章节链接:

nodejs web应用服务器搭建(一):跑起你的服务器
nodejs web应用服务器搭建(二):express 框架说明(应用)
nodejs web应用服务器搭建(三):业务的实现+mongo的基础使用
nodejs web应用服务器搭建(四):生产环境的搭建

介绍mongoDB

mongoDB属于noSQL型(即非关系型的数据库)数据库,而mongoDB属于文档类型,使用的简易程度远超于传统数据库,所以前端转后端时可以以noSQL类型作为切入点,但传统数据库还是拥有非常大的优势的,技术选型还是需要根据具体业务来决定,毕竟 技术脱离业务 就一文不值了。接下来不过多介绍了,进入正题。

mongodb 的安装使用。

首先先去mongoDB 官网,根据你的系统下载安装程序 传送门

1. 选择自定义安装
nodejs web应用服务器搭建(三):业务的实现+mongo的基础使用详解编程语言

2.选择你需要安装的目录
nodejs web应用服务器搭建(三):业务的实现+mongo的基础使用详解编程语言

安装完以后可以先查看一下环境变量,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 10086
mongodb 的使用说明

你需要了解一下关于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