最近学习了node.js,做了一个手把手的培训项目,使用node.js express框架,配合mysql数据库和前端vue框架,开发多人文档编辑系统。
node.js环境下的express mysql服务器项目示例
首先是环境建设:
在节点环境下
$ npminstall-g express-generator $ express-e项目进入项目文件的根目录以安装相关模块
$ npmin stall $ debug=node-blog : * NPM start查看项目目录有什么。
查看生成的项目目录中有什么,
Bin:存储可执行文件
Node_modules:存储package.json中安装的模块,当你在package.json中添加依赖模块并安装时,将它们存储在这个文件夹中。
Public:存储图像、css、js等前端资源文件
路由:存储路由文件
视图:存储视图文件或模板文件
App.js:启动文件或门户文件
Package.json:它存储项目和模块依赖关系的信息。在依赖项中添加依赖模块时,将运行npm安装。npm将检查当前目录中的package.json,并自动安装所有指定的模块
现在开始安装数据库。这里我选择mysql。
安装npm install mysql - save-dev后,开始配置数据库。
//mysql配置文件MySQL={host:' xx.xxx.xxx ',//这是数据库user3360' XXX '的地址,//你需要用户的名字password: 'xxx ',//用户密码,如果你没有密码,直接双引号是database : ' XXX '//database name }///,这样我们就可以连接到数据库模块了. exports=MySQL;//使用module.exports公开这个接口,mysql连接池配置://mysql连接池配置文件var MySQL=require(' MySQL ');var $dbConfig=require('./config/MySQL’);//注意在自己的项目中改成mysql配置文件的路径。//使用连接池避免打开太多线程,提高性能。Varpool=MySQL。create pool($ dbconfig);/* * *从查询*/函数responsedorurn(RES,result,resultjson)的结果自定义返回JSON结果({ if(result==' undefined '){ RES . JSON({ code : ' 201 ',msg: '未能do ' });} else { res.json(结果);}};/* * *不带占位符func */函数查询的SQL(SQL,回调){pool。getconnection(函数(err,connection) {connection。查询(SQL,函数(err,row)){回调(err,row);//释放链接连接. release});});}/* * *带有占位符func */函数的sql查询args (SQL,args,callback){ pool . getconnection(function (err,connection){ connection . query(SQL,args,function(err,rows) {callback (err,rows)};//释放链接连接. release});});}//exportsmodule。exports={query: query,queryargs 3360 queryargs,doreturn : responsedorun}操作数据库的过程非常灵活。我用模块化的思想,把一个数据表封装成一个模块并公开,通过这个模块可以得到这个表的添加、删除、修改的SQL语句。粘贴下面的示例代码:
let express=require(' express ');让mysql=require('./公共/基本连接’);让qibu_task={ index: ' ',value: ' ',list : `从qibu_task中选择*;`, //列表查询insert(args){ qibu _ task。索引=' ';qibu _ task.value=args=筛选(['id ',' task ',' name ',' created_at'],args)为{让键入参数} { qibu _ task。index=` $ { qibu _ task。index } $ { key },`让re=/^[0-9]。[0-9]*/;if(re。test(args[key]){ qibu _ task。value=` $ { qibu _ task。value } $ { args[key]},` } else { qibu _ task。value=` $ { qibu _ task。value }“$ { args[key]}”,`} } qibu _ task。index=qibu _ task。索引。substr(0,qibu _ task。索引。长度-1);qi bu _任务。值=qi bu _ task。价值。substr(0,qi bu _ task。价值。长度-1);返回` insert INTO qi bu _ task($ { qi bu _ task。index })VALUES($ { qi bu _ task。value })`;}, //按需增加选择(索引,值){ 0从qibu_task返回` SELECT *,其中$ { index }=$ { value }` //按需查询},delete(index,value){ return ` delete from qibu _ task,其中$ { index }=$ { value }` //按需删除},update(index,args) { //提交修改if(args中的索引){ qibu _ task.value=args=筛选(['id ',' task ',' name ',' created_at'],args)为(让输入参数){让re=/^[0-9]。[0-9]*/;if(re。test(args[key]){ qibu _ task。value=` $ { qibu _ task。value } $ { key }=$ { args[key]},` } else { qibu _ task。value=` $ { qibu _ task。value } $ { key }=' $ { args[key]} ',` } } qibu _ task。value=qibu _ task。价值。substr(0,qibu_task.value.length - 1)返回" UPDATE qibu _ task SET $ { qibu` },};//参数过滤函数过滤器(参数,obj){让NewObj=}个参数。foreach(every={ if(every in obj){ NewObj[every]=obj[every]} });返回newObj };module.exports=qibu _ task然后就可以在路由返回时进行数据库操作啦。具体代码就不贴啦。路由可以识别获取、发布方法,修改和删除通过传递参数模拟。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。