nodejs 数据库?nodejs+mysql怎样操作数据库
很多朋友对于nodejs 数据库和nodejs+mysql怎样操作数据库不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
nodejs+mysql怎样操作数据库
这次给大家带来nodejs+mysql怎样操作数据库,nodejs+mysql操作数据库的注意事项有哪些,下面就是实战案例,一起来看一下。
一、几个常用的全局变量
1、__filename获取当前文件的路径
2、__dirname获取当前文件的目录
3、process.cwd()获取当前工程的目录
二、文件的引入与导出
1、使用require引入文件
2、使用module.exports导出文件中指定的变量、方法、对象
三、node项目的搭建目录结构
demo
package.json当前项目所依赖的包或者模块
router存放路由的文件
views存放视图的模块
public静态文件
module书写模块比如数据库
app.js主入口文件
四、将路由视图单独写在router文件中demo
1、视图视图文件
const express= require("express");
const router= express.Router();
router.get("/",(req, res)=>{
res.send("hello word");
});
router.get("/article",(req, res)=>{
res.send("我是文章列表");
})
module.exports= router;2、在主文件中调用
'use strict';
const express= require("express");
const app= express();
app.use("/",require("./router/03_router"))
app.use("/app",require("./router/03_router1"))
app.listen(3000);五、使用ejs模板
1、需要安装但可以不引入
npm install ejs--save2、在主文件中配置
//配置模板的文件路径
app.set("views",__dirname+"/views");
//配置模板引擎
app.set("view engine","ejs");3、使用
①、模板文件
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<h1>我是模板渲染的</h1>
</body>
</html>②、在路由中渲染模板
'use strict';
const express= require("express");
const router= express.Router();
router.get("/",(req, res)=>{
//可以直接使用res.render("03_index");
res.render("03_index.ejs");
});
router.get("/article",(req, res)=>{
res.send("我是文章列表");
})
module.exports= router;③、主文件
'use strict';
const express= require("express");
const app= express();
//配置模板的文件路径
app.set("views",__dirname+"/views");
//配置模板引擎
app.set("view engine","ejs");
app.use("/",require("./router/03_router"))
app.use("/app",require("./router/03_router1"))
app.listen(3000);六、关于ejs模板文件的使用
1、返回数据
...
let dataset={
name:"张三",
age:20,
books:['三国演义','西游记','红楼梦','水浒传']
}
res.render("03_index.ejs",dataset);
...2、普通的字段
<h2><%= name%></h2>
<h2><%= age%></h2>3、迭代数组
<ul>
<% for(let i in books){%>
<li><%= books[i]%></li>
<%}%>
</ul>七、加载静态文件
1、主文件中配置
//设置静态文件的加载(js,css,img)
app.use(express.static(__dirname+"/public"));2、在模板中使用
<link rel="stylesheet" rel="external nofollow" href="./css/bootstrap.css" rel="external nofollow">
<script type="text/javascript" src="./js/jquery-3.1.1.min.js"></script>
<img src="./img/002.jpg">
...八、使用mysql数据库
1、在module中创建一个db.js的文件
'use strict';
const mysql= require("mysql");
/**
*将整个方法全部暴漏出去
*@param sql sql语句
*@param arg传递到sql语句中的参数,可以不写
*@param callback回调函数,可以不写
*/
module.exports= function(sql,arg,callback){
//1.创建连接(根据自己的数据库配置)
let config= mysql.createConnection({
host:"localhost",//数据库的地址
user:"root",//数据库用户名
password:"root",//数据库密码
port:"3306",//mysql数据库的端口号
database:"mybatistest"//使用那个数据库
});
//2.开始连接数据库
config.connect();
//3.对数据库的增删改查操作
config.query(sql,arg,(err,data)=>{
callback&& callback(err,data);
})
//4.关闭数据库
config.end();
}2、在router视图中使用查询数据
①、引入文件
//引入数据库文件
const db= require("./../module/db");②、视图中使用
router.get("/",(req, res)=>{
db("select* from m_dept",(err,data)=>{
console.log(data);
res.render("03_index.ejs",{data:data});
})
});3、新增数据
①、前端页面见代码案例
②、通过req.query获取用户数据参数
router.get("/regist",(req, res)=>{
//获取到输入参数,前提是input上要写name
console.log(req.query);
db("insert into student(name,age) values(?,?)",[req.query.username,req.query.age],(err,data)=>{
console.log(data);
if(data){
res.send("成功");
}
})
})九、关于node返回json的方式
在前后端分离开发模式中后端返回的数据一般都是json,不需要使用ejs模板引擎了
...
res.json({
info:"成功",
code:1
});
...相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!
推荐阅读:
如何在项目中使用PHP静态绑定
如何使用AngularJS监听渲染
nodejs 怎么把socket数据写入数据库
先说下我对socket.io的理解,websocket更像是开启了一个端口服务,来监视过往的通讯。所以我们可以依赖于当前站点80端口启socket服务,也可以放于其他端口上,比如:
1
require('socket.io').listen(3000);
这样就是监视3000端口了,由于我用的免费服务器,没有权限打开其他端口,所以,我还是使用80了,由于80已经被express使用了,所以我只好在express使用的时候传进来了。
var server= http.createServer(app);
var socket= require('./socket/msg')(server);
然后我在msg.js里是这样写的
var db= require('../db/mysql');
var sio= require('socket.io');
var IO= function(server){
var io= sio.listen(server)
这样就和谐了,db是创建mysql连接的方法,不在本节内容里,略。
在socket.io里是这样的,首先创建一个io通道的连接,然后监视里面的socket的事件,nodejs是事件驱动嘛。代码如下:
io.on('connection', function(socket){
console.log('a user connected.');
socket.on('disconnect', function(){
console.log('user disconnected.');
});
})
这时只要有用户连接上,就会进入connection中了,然后它的参数是个socket,如果是公聊,我们可以直接用
1
io.emit('chat message',{});
这种形式了。但我们这里是私聊,所以我们要临时的把这个socket对象保存在全局里,供与你私聊的对象使用找到你的socket,很绕口,其实这里的私聊,不算完全的点对点,它还是经过了服务器的,消息传给服务器,服务器再找到你要传达给的那个人的socket对象,发给他。这就是整个的过程了。这里我使用的是一个类数组对象来存储的.
var users={},
usocket={};
socket.on('user join', function(data){
users[username]= username;
usocket[username]= socket;
})
由于我这里需要用户名登录,所以我就把用户名作为了唯一的标识,这里用类数组的形式的好处就是我不用循环也能够很快的找到它。再我给A发送私聊时,我会先在这个uscoket里面找到它,然后调用它的emit。
function sendUserMsg(data){
if(data.to in usocket){
console.log('================')
console.log('to'+ data.to, data);
usocket[data.to].emit('to'+ data.to, data);
usocket[data.user].emit('to'+ data.user, data);
console.log('================')
}
}
这里我emit了两次的原因是,我发给对方消息的同时,我自己也要收到这个消息,然后把它显示出来,为什么这样?其一,接口统一了,聊天里的内容全是服务器过来的,其二,证明我发送成功了。
然后我在客户端监听时,也用我自己的用户名起了一个to+用户名的事件监听。
socket.on('to'+ user, function(data){
//console.log(data);
formatMsg(data);
})
这样,不管是我发的消息,还是我收到消息,都会进入这个事件了。最后,在用户离开的时候别忘记delete掉这个对象。
socket.on('disconnect', function(){
console.log('disconnect')
if(username){
counter--;
delete users[username];
delete usocket[username];
if(home.name== username){
homeLeave(username);
}
sendmsg({
type: 0,
msg:"用户<b>"+ username+"</b>离开聊天室",
counter: counter,
users: users
})
}
});
nodejs怎么连接数据库
通常在NodeJS开发中我们经常涉及到操作数据库,尤其是 MySQL,作为应用最为广泛的开源数据库则成为我们的首选,本篇就来介绍下如何通过NodeJS来操作 MySQL数据库。安装MySQL模块到NodeJS中我们需要让NodeJS支持MySQL,则需要将MySQL模块添加到系统支持库
想要快速了解Node.js,赞生推荐亲看看 node.js_guide.pdf— node.js开发指南:想要电子版高清的留言发送
如果不想留言可以带你做飞机!直接下载
Node.js
简单介绍一下node.js的操作吧
安装 node-mysql
$ npm install mysql
创建测试表
//数据库名 NodeSampleCREATE TABLE `NodeSample`.`MyTable`(
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`firstname` VARCHAR( 20) NOT NULL,
`lastname` VARCHAR( 20) NOT NULL,
`message` TEXT NOT NULL
) ENGINE= MYISAM;
连接数据库
Js代码
var sys= require('sys');
var Client= require('mysql').Client;
var client= new Client();
client.user='someuser';
client.password='password';
client.connect(function(error, results){
if(error){
console.log('Connection Error:'+ error.message);
return;
}
console.log('Connected to MySQL');
});
OK,关于nodejs 数据库和nodejs+mysql怎样操作数据库的内容到此结束了,希望对大家有所帮助。