NodeJs之服务搭建与数据库连接
NodeJs之服务搭建与数据库连接
一,介绍与需求分析
1.1,介绍
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。Node.js 的包管理器 npm,是全球最大的开源库生态系统。
二,node服务搭建
2.1,安装创建项目服务
第一步:安装NODE
第二步:安装express,使用熟悉的命令安装,
- npm install -g express
第三步:最新express版本中将命令工具分家出来了(项目地址:https://github.com/expressjs/generator),所以我们还需要安装一个命令工具,命令如下:
- npm install -g express-generator
第四步:使用express创建一个工程:
- express myervice
第五步:安装包并启动
- cd myervice
- npm install //安装包
- npm start //启动服务
第六步:访问http://localhost:3000/就看到熟悉的页面了
2.2,配置node服务器
具体的代码如下:
- var express = require('express');//引入express模块
- var app = express();//初始化化
- var settingConfig = require('./config/settingConfig.js');//引入配置文件
- var allow_Orgin = settingConfig.getValueByKey("Access_Control_Allow_Origin");//解析
- // Access Control Allow
- var cors = require('cors');//引入跨域资源共享
- var whitelist = allow_Orgin.split(';');
- var hostName = '127.0.0.1';//设置主机名
- var port = 8080;//设置端口
- var corsOptions = {//配置
- credentials: true,
- origin: function (origin, callback) {
- if (origin==undefined || whitelist.indexOf(origin) !== -1) {
- callback(null, true)
- } else {
- console.log(origin);
- callback(new Error('Not allowed by CORS'))
- }
- }
- }
- app.use(cors(corsOptions));
- app.use('/api', require('./routes/dbWebApi.js'));
- // catch 404 and forward to error handler
- app.use(function(req, res, next) {
- var err = new Error('Not Found');
- err.status = 404;
- var result = {
- httpCode: 404,
- message: err.message,
- }
- res.status(404).json(result);
- next();
- });
- // error handler
- app.use(function(err, req, res, next) {
- // set locals, only providing error in development
- res.locals.message = err.message;
- res.locals.error = req.app.get('env') === 'development' ? err : {};
- // render the error page
- res.status(err.status || 500).json({
- httpCode: err.status || 500,
- message: err.message,
- });
- });
- app.listen(port,hostName,function(){//监听
- console.log(`服务器运行在http://${hostName}:${port}`);
- });
解析配置文件的代码settingConfig.js如下:
- var xml2js = require('xml2js');//xml解析
- var fs = require('fs');//文件处理系统
- function getValueByKey(key) {
- var path = './config/settingConfig.xml';//xml配置文件
- var result = '';
- var data;
- try {
- data = fs.readFileSync(path, 'utf8');
- }
- catch (err) {
- throw err;
- }
- var xmlDoc = xml2js.parseString(data, { explicitArray: true }, function (err, json) {
- };
- });
- return result;
- }
配置文件settingConfig.xml如下:
- <?xml version="1.0" encoding="utf-8" ?>
- <appSettings>
- <add key="Access_Control_Allow_Origin" value="http://localhost:8080;http://localhost:3000"/>
- <add key="dbName" value="test"/>
- <add key="WhetherNeedAuth" value="true"/>
- </appSettings>
如需完整代码,请先留言评论加关注
三,node连接数据库
3.1,连接数据库的配置与解析
目前只支持两种类型的数据库:MySQL sql server
解析配置文件:operateXML.js:
- function params(){//简单配置
- this.server="";
- this.database="";
- this.user="";
- this.password="";
- this.sp_name = "";
- this.sp_output = "";
- }
- function mysqlparams(){
- this.host="";
- this.port="";
- this.database="";
- this.user="";
- this.password="";
- this.sp_name="";
- this.sp_output = "";
- }
- function getMsSQLParamObj(appName,spName){ //sql server
- var xml2js = require('xml2js');
- var fs=require('fs');
- var path='./config/databaseConfig.xml';
- var param=new params();
- var data;
- try{
- data= fs.readFileSync(path, 'utf8');
- }
- catch(err){
- throw err;
- }
- var xmlDoc = xml2js.parseString(data, { explicitArray: true }, function (err, json) {
- });
- return param;
- }
- function getMySQLParamObj(appName,spName){ //mysql
- var xml2js = require('xml2js');
- var fs=require('fs');
- var path='./config/databaseConfig.xml';
- var param=new mysqlparams();
- var data;
- try{
- data= fs.readFileSync(path, 'utf8');
- }
- catch(err){
- throw err;
- }
- var xmlDoc = xml2js.parseString(data, { explicitArray : true },function(err, json) { //解析
- });
- return param;
- }
XML配置文件:databaseConfig:
- <?xml version="1.0" encoding="UTF-8"?>
- <root>
- <sqlserver>
- <database name="TEST" server="localhost\MSSQL" database="test" user="sa" pwd="908">
- <!--登录注册-->
- <storedProcedure name="RegisterToUser" value="[Auth].[usp_RegisterToUser]" description="注册"/>
- </database>
- </sqlserver>
- <mysql>
- <database name="test" host="localhost" port="3306" database="test" user="root" pwd="root">
- <storedProcedure name="getUserPages" value="sp_getUserPages" output="total"/>
- <storedProcedure name="getUserCount" value="sp_getUserCount"/>
- </database>
- </mysql>
- </root>
3.2,连接数据库
连接数据库:db_mssql.JS
- var sql = require("mssql");
- var xml = require('../config/operateXML.js');//加载解析配置文件
- function operateDatabase(appName, spName, json, callback) {
- var paraarr = {}
- if ((typeof json) == "string")
- parr = JSON.parse(json);
- else
- parr = json;
- var config = xml.getMsSQLParamObj(appName, spName);
- try {//连接数据库
- new sql.ConnectionPool(config).connect().then(function (pool) {
- } catch (err) {
- }
- }
3.2,get与post请求
定义请求方式:dbWebApi.js
- var express = require('express');
- var router = express.Router();
- var dbservice = require('../services/db_mssql.js');
- router.get('/readData/:appName/:spName/:json', function (req, res) {
- dbservice.operateDatabase(appName, spName, json, function (data) { });
- });
- router.post('/postData', function (req, res) {
- dbservice.operateDatabase(appName, spName, json, function (data) {
- });
- });
下一章:NodeJs连接操作MongoDB数据库
NodeJs之服务搭建与数据库连接的更多相关文章
- 使用nodejs和express搭建http web服务
目录 简介 使用nodejs搭建HTTP web服务 请求nodejs服务 第三方lib请求post 获取http请求的正文 Express和使用express搭建http web服务 express ...
- 57.NodeJS入门--环境搭建 IntelliJ IDEA
转自:https://blog.csdn.net/wang19891106/article/details/51127133 NodeJS入门–环境搭建 IntelliJ IDEA 本人也刚开始学习N ...
- NodeJS入门--环境搭建 IntelliJ IDEA
NodeJS入门–环境搭建 IntelliJ IDEA 本人也刚开始学习NodeJS,所以以此做个笔记,欢迎大家提出意见. 1.首先 下载安装NodeJS,下载安装IntelliJ IDEA 2.接下 ...
- 借助Nodejs在服务端使用jQuery采集17173游戏排行信息
Nodejs相关依赖模块介绍 Nodejs的优势这里就不做介绍啦,这年头相信大家对它也不陌生了.这里主要介绍一下用到的第三方模块. async:js代码中到处都是异步回调,很多时候我们需要做同步处理, ...
- ServiceStack.Hello——跨平台.net REST api服务搭建
ServiceStack.Hello--跨平台.net REST api服务搭建 自己创建: https://github.com/ServiceStack/ServiceStack/wiki/Cre ...
- WCFRESTFul服务搭建及实现增删改查
WCFRESTFul服务搭建及实现增删改查 RESTful Wcf是一种基于Http协议的服务架构风格, RESTful 的服务通常是架构层面上的考虑. 因为它天生就具有很好的跨平台跨语言的集成能力 ...
- 微信小程序语音识别服务搭建全过程解析(项目开源在github)
silk v3录音转olami语音识别和语义处理的api服务(ubuntu16.04服务器上实现) ## 重要的写在前面 重要事项一: 目前本文中提到的API已支持微信小程序录音文件格式:silk v ...
- 微信小程序语音识别服务搭建全过程解析(https api开放,支持新接口mp3录音、老接口silk录音)
silk v3(或新录音接口mp3)录音转olami语音识别和语义处理的api服务(ubuntu16.04服务器上实现) 重要的写在前面 重要事项一: 所有相关更新,我优先更新到我个人博客中,其它地方 ...
- Git服务搭建及github使用教程
.pos { position: fixed; top: 35%; left: 90% } .pos a { border: 2px solid white; background: #99CCFF; ...
随机推荐
- Docker 删除&清理镜像
文章首发自个人网站:https://www.exception.site/docker/docker-delete-image 本文中,您将学习 Docker 如何删除及清理镜像? 一.通过标签删除镜 ...
- Docker 搜索镜像
文章首发个人网站: https://www.exception.site/docker/docker-search-image 本文中,您将学习 Docker 如何搜索镜像? 一.search 命令 ...
- 处理SQL Server中的重复行
如果表中的数据需要基于行中的多个值具有唯一约束,则适合的解决方案将是复合健. 复合主键 使用SQL Server语法创建符合主键非常简单. create table my_parts ( id_par ...
- AR增强现实开发介绍(续)
AR增强现实开发介绍(续) ---开发基础篇 开发增强现实技术,无论是商业级应用,还是面向幼儿教育的游戏产品,都需要从了解.获取.下载增强现实插件开始.目前全世界使用量最大公认最好的增强现实插件是高通 ...
- 微信公众号开发C#系列-6、消息管理-普通消息接受处理
1.概述 通过前面章节的学习,我们已经对微信的开发有了基本的掌握与熟悉,基本可以上手做复杂的应用了.本篇我们将详细讲解微信消息管理中普通消息的接收与处理.当普通微信用户向公众账号发消息时,微信服务器将 ...
- Linux运维企业架构实战系列
Linux运维企业架构项目实战系列 项目实战1-LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2-LVS.nginx实现负载均衡系列 2.1 项目实战2.1-实现基于LVS负载均衡集 ...
- Notepad++替换SQL Server Select窗口列名的中括号的小技巧
条件:“查找模式”那选中“扩展” 一.简单替换 查找目标(包括空格,各个SSMS版本可能不同): ]\r\n ,[ 替换为:, 二.替换为@ 查找目标(包括空格,各个SSMS版本可能不同): ]\r\ ...
- Convert.ToInt32()和int.Parse()区别
Convert.ToInt32()和int.Parse()都可以数据转换个int类型,区别在于: 1. Convert.ToInt32()将object类类型转换成int类型,例如:Convert.T ...
- c#封装DBHelper类
public enum EffentNextType { /// <summary> /// 对其他语句无任何影响 /// </summary> None, /// <s ...
- 使用go, gin, gorm编写一个简单的curd的api接口
go 是一门非常灵活的语言,既具有静态语言的高性能,又有动态语言的开发速度快的优点,语法也比较简单,下面是通过简单的代码实现了一个简单的增删改查 api 接口 hello world 常规版 新建 d ...