node.js从入门到放弃
Posted 一世^浮萍
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node.js从入门到放弃相关的知识,希望对你有一定的参考价值。
以下内容全是我个人理解写出,如有不对,请立刻练习本人进行更改。以免被刚入门的被我带入坑里。
—node是什么?我想大家应该都知道。
node是前端未来干掉后端的一种语言,是用javascript来编写后端代码的一种语言。前端走后端的路让后端无路可走。是前端人员走向全栈开发的一条路。
—学习node要掌握什么呢?学习它就需要掌握一下几个方面,这是我现在学习的时候需要掌握的东西,算是很基本的东西了。
一、node的安装
二、数据库的安装和使用(sql命令)
三、node最底层基本写法
四、koa框架
五、Sequelize功能模块使用
六、读写文件
node的安装在这里就不讲了,网上一搜就都能搜到的,不想搜也可以点击这个连接,去看下node安装这些都有详细的介绍。
数据库的安装在网上也能够搜索到,安装数据库可以看下这个博客,这里写的挺详细的,从安装数据库到navicat mysql的安装都有 查看请点击这里↓↓↓↓↓↓↓
sql的命令离不开增删改查
mydb:数据库名
user:表名
text:对应的属性名
2:要插入的数据
id:主键
age:对应的属性
增: INSERT INTO `mydb`.`user` (`text`) VALUES (\'2\');
删:DELETE FROM user WHERE id=1
改:UPDATE `mydb`.`user` SET `age`=\'22\' WHERE `id`=\'1\';
查:select * from user
以上就是数据操作的主要四个,其他命令可以百度一下,一抓一大把。
接下来进入最主要的地方了,开是接触放弃的地方了,底层的基本用法
+开始需要把数据库放进去才能够使用
$ cnpm install mysql
接下来引入你本地的数据库
// 连接数据库 var mysql = require(\'mysql\'); var connection = mysql.createConnection({ host : \'localhost\', user : \'root\', password : \'123456\', database : \'node\' });
接下来开始捣鼓你的数据库(我的数据库放了一下的数据名)
接下来对下面的数据进行操作(用上面已经连接上的数据库)
node底层写法:
var http = require(\'http\'); // 连接数据库 var mysql = require(\'mysql\'); var connection = mysql.createConnection({ host : \'localhost\', user : \'root\', password : \'123456\', database : \'node\' }); // 请求下数据库 connection.connect(); var http = require("http"); var url = require("url"); // 调用方法 function start() { function onRequest(request, response) {} http.createServer(onRequest).listen(8888);
端口号是8888去进行请求 } start();
新增数据方法
// 新增数据 const hello = function (response, data) { connection.query(`INSERT INTO log (content, summary, user, day) VALUES ("${data.content}", "${data.summary}", "${data.user}","${data.day}");`, function (error, results, fields) { if (error) throw error; // 请求成功,返回格式 response.writeHead(200, {"Content-Type": "application/json"}); // 返回给页面的数据 response.write(JSON.stringify(results.insertId)); // 请求结束 response.end(); }); }
获取列表
// 获取列表 const hello2 = function (response, data) { connection.query(`select * from log`, function (error, results, fields) { if (error) throw error; response.writeHead(200, {"Content-Type": "application/json"}); response.write(JSON.stringify(results)); response.end(); }); }
删除事件
// 删除id=4 const hello4 = function (response,data){ console.log(data) connection.query(`DELETE FROM log WHERE id=${data.id}`,function (error,results,fields) { if (error) throw error; response.write("ok"); response.end(); }) }
分页写法
// 分页写法 const hello3 = function (response, page, size) { console.log(\'page, size\', page, size) connection.query(`select * from log limit ${size} offset ${(page-1)*size} `, function (error, results, fields) { if (error) throw error; response.writeHead(200, {"Content-Type": "application/json"}); response.write(JSON.stringify(results)); response.end(); }); }
调用的话直接调用方法就可以(这里还需要注意是get请求还是post请求)
// 调用方法 function start() { function onRequest(request, response) { // /hello var pathname = url.parse(request.url).pathname.split(\'/\'); // /hello3/1/10 // 接收数据 if (request.method === \'POST\') { request.on(\'data\', function(data) { // 把数据转换成json格式 let data1 = JSON.parse(data.toString()) console.log(\'data: \', data1.toString(), data1) // 接收到的接口调用什么方法 switch(pathname[1]) { case \'hello\': { hello(response, data1) } break; case \'hello2\': { hello2(response, data1) } break; case \'hello3\': { // 用拼接的方式(get)获取数据方法 // let page = pathname[2] // let size = pathname[3] // console.log(pathname) // 用接收体来调用数据(post) hello3(response, data1.page, data1.size) } break; case \'hello4\': { hello4(response, data1) } break; // 调用weitch方法 default: response.end(); } }) }
完整的使用代码
var http = require(\'http\'); // 连接数据库 var mysql = require(\'mysql\'); var connection = mysql.createConnection({ host : \'localhost\', user : \'root\', password : \'123456\', database : \'node\' }); // 请求下数据库 connection.connect(); var http = require("http"); var url = require("url"); // 新增数据 const hello = function (response, data) { connection.query(`INSERT INTO log (content, summary, user, day) VALUES ("${data.content}", "${data.summary}", "${data.user}","${data.day}");`, function (error, results, fields) { if (error) throw error; // 请求成功,返回格式 response.writeHead(200, {"Content-Type": "application/json"}); // 返回给页面的数据 response.write(JSON.stringify(results.insertId)); // 请求结束 response.end(); }); } // 获取列表 const hello2 = function (response, data) { connection.query(`select * from log`, function (error, results, fields) { if (error) throw error; response.writeHead(200, {"Content-Type": "application/json"}); response.write(JSON.stringify(results)); response.end(); }); } // 删除id=4 const hello4 = function (response,data){ console.log(data) connection.query(`DELETE FROM log WHERE id=${data.id}`,function (error,results,fields) { if (error) throw error; response.write("ok"); response.end(); }) } // 分页写法 const hello3 = function (response, page, size) { console.log(\'page, size\', page, size) connection.query(`select * from log limit ${size} offset ${(page-1)*size} `, function (error, results, fields) { if (error) throw error; response.writeHead(200, {"Content-Type": "application/json"}); response.write(JSON.stringify(results)); response.end(); }); } // 调用方法 function start() { function onRequest(request, response) { // /hello var pathname = url.parse(request.url).pathname.split(\'/\'); // /hello3/1/10 // 接收数据 if (request.method === \'POST\') { request.on(\'data\', function(data) { // 把数据转换成json格式 let data1 = JSON.parse(data.toString()) console.log(\'data: \', data1.toString(), data1) // 接收到的接口调用什么方法 switch(pathname[1]) { case \'hello\': { hello(response, data1) } break; case \'hello2\': { hello2(response, data1) } break; case \'hello3\': { // 用拼接的方式(get)获取数据方法 // let page = pathname[2] // let size = pathname[3] // console.log(pathname) // 用接收体来调用数据(post) hello3(response, data1.page, data1.size) } break; case \'hello4\': { hello4(response, data1) } break; // 调用weitch方法 default: response.end(); } }) } // Get if (request.method === \'GET\') { response.end(\'aaaaa\'); } } http.createServer(onRequest).listen(8888); } start();
开始化简模式。学习使用koa框架
安装koa
npm intall koa2 npm intall koa-router
在页面引入
const Koa = require(\'koa\') const bodyParser = require(\'koa-bodyparser\') const Router = require(\'koa-router\')
来个简单例子
const Koa = require(\'koa\'); //引入koa const app = new Koa(); //方法放到app下 app.use(async ctx => { ctx.body = \'Hello World\'; }); //执行方法 app.listen(3000); //app创建端口号
koa主要的就是request的请求方法,response响应,因为太多就不在这讲了,想了解的 戳这里↓↓↓↓↓
app.use(async ctx => { console.log(ctx.request.href) //获取到地址,换个方法就可以获取前台传得数据 ctx.response.body = "aaaaa" //返回值 });
来上面的去看文档慢慢敲就行了,Sequelize功能模块使用来讲一下
var Sequelize = require(\'sequelize\'); var mysql = new Sequelize(\'node\', \'root\', \'123456\', { host: \'localhost\', dialect: \'mysql\', pool: { max: 5, min: 0, idle: 10000 }, })
看数据库的导入方式就不一样了,接下来我们使用的可能多数都是这样的,样式了。
//数据表里面的内容 var Log = mysql.define(\'log\', { id: { primaryKey: true, type: Sequelize.INTEGER, }, content: Sequelize.STRING, summary: Sequelize.STRING, user: Sequelize.STRING, day: Sequelize.STRING, }, { freezeTableName: true, // Model 对应的表名将与model名相同 timestamps: false });
使用方法查询数据
Log.findAll({ where: { $and: [ { id: {gt: 32} }, //大于多少 { id: {lt: 35} } //小于等于多少 ] }, raw: true }).then(res => { console.log(res.length) //一共多少条 for(var i=0 ;i<res.length;i++){ //遍历出来显示 Log.create( { content: res[i].content, summary: res[i].summary, user: res[i].user, day: res[i].day } ) } })
整体使用
const main = async function() { //查询所有 let res = await Log.findAll({ raw: true }) //写入 let newDatas = res.map(item => ({ a: item.content, b: item.summary, c: item.user, d: item.day, })) //往新表里插入多条数据 await Aaa.bulkCreate(newDatas) //删除数据 await Aaa.destroy({ where: { id: 2 }}) //修改数据 await Aaa.update({ a: \'item.content\', b: \'item.summary\', c: \'item.user\', d: \'item.day\', }, { where: { id: 3 } }) } main()
接下来进行三军会师,用三种方法写成最简单的代码来调用数据
开始在app文件中
const Koa = require(\'koa\') const bodyParser = require(\'koa-bodyparser\') const router = require(\'./controllers\') //引入使用包 const app = new Koa() app.use(bodyParser()) //调用koabadyparser方法 app.use(router.routes()) app.listen(3000) //引入文件,创建端口
在controllers文件中写入方法并进行调用
const Router = require(\'koa-router\') const router = new Router() const services = require(\'./services\') //查询所有数据 router.get(\'/\', async (ctx, next) => { let res = await services.hello1() ctx.body = res }); //返回值hello world router.get(\'/hello\', (ctx, next) => { ctx.body = "hello world" }); //新增数据 router.post(\'/hello2\', async (ctx, next) => { let obj = ctx.request.body let res = await services.hello2(obj) let eee = { content : res.content, summary : res.summary } ctx.body = { statusCode: 200, result:eee } }) //删除数据 router.post(\'/hello3\', async (ctx, next) => { let obj = ctx.request.body let res = await services.hello3(obj) ctx.body = { statusCode: 200, } }) //查询数据 router.post(\'/hello4\', async (ctx, next) => { let obj = ctx.request.body let res = await services.hello4(obj) ctx.body = res }) //更改数据 router.post(\'/hello5\', async (ctx, next) => { let obj = ctx.request.body let res = await services.hello5(obj) ctx.body = res }) //调用 module.exports = router
在services.js文件中
const Log = require(\'./models\') const hello = async function (obj) { //放个查询方法 let logs = await Log.Log.findAll({ where: { $and: [ {id: { $gt: obj.id }}, {id: { $lte: obj.css }} ] } }) return logs } //查询所有数据大于0的 const hello1 = async function () { let loge = await Log.Log.findAll({ where: { id: { gt: 0}, } }) return loge } //新增数据 const hello2 = async function (obj) { let loge = await Log.rizhi.create({ content:obj.content, summary:obj.summary, user:obj.user, day:"2015-10-7" }) return loge } //删除数据 const hello3 = async function (obj) { let loge = await Log.rizhi.destroy({ where:{ id : obj.id } }) return loge } 查询数据 const hello4 = async function (obj) { let ass = { content : obj.content, summary : obj.summary, user : obj.user, } if(!obj.content){ delete ass.content } if(!obj.summary){ delete ass.summary } if(!obj.user){ delete ass.user } let loge = await Log.rizhi.findAll({ where:ass }) return loge } //更改数据 const hello5 = async function (obj) { let ass = { content : obj.content, summary : obj.summary, user : obj.user, } let loge = await Log.rizhi.update(ass,{ where:{ id : obj.id } }) let cha = await Log.rizhi.findAll({ where: { id: obj.id, } }) return cha } 需要调用的方法 module.exports = { hello,hello1,hello2,hello3,hello4,hello5 }
最后将表格的内容模块导入到models.js中
const mysql = require(\'./mysql\') //导入数据库 const Sequelize = require(\'sequelize\') //log表内数据格式 var Log = mysql.define(\'log\', { id: { primaryKey: true, type: Sequelize.INTEGER, }, content: Sequelize.STRING, summary: Sequelize.STRING, user: Sequelize.STRING, day: Sequelize.STRING, }, { freezeTableName: true, // Model 对应的表名将与model名相同 timestamps: false }); //日志表内数据格式 var rizhi = mysql.define(\'rizhi\', { id: { primaryKey: true, type: Sequelize.INTEGER, }, content: Sequelize.STRING, summary: Sequelize.STRING, user: Sequelize.STRING, day: Sequelize.STRING, }, { freezeTableName: true, // Model 对应的表名将与model名相同 timestamps: false }); 调出两个表 module.exports = {Log,rizhi}
这就是一个完整的的node项目了,增删改查,以后就需要自己去扩展了
读写文件的话,就免不了书把txt,excel、sql、之间的数据转换,以后在讲。。。。。。
以上是关于node.js从入门到放弃的主要内容,如果未能解决你的问题,请参考以下文章