以下内容全是我个人理解写出,如有不对,请立刻练习本人进行更改。以免被刚入门的被我带入坑里。
—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、之间的数据转换,以后在讲。。。。。。