node操作mysql数据库实例详解,js实现彩色条纹滚动条效果

左侧可用调色板选择条纹颜色

效果图:

本文实例讲述了node操作mysql数据库的方法。分享给大家供大家参考,具体如下:

效果图:

betway必威亚洲官网 1

1、建立数据库连接createConnection(Object)方法

betway必威亚洲官网 2

代码如下:

betway必威亚洲官网,该方法接受一个对象作为参数,该对象有四个常用的属性host,user,password,database。与php中链接数据库的参数相同。属性列表如下:

代码如下:

<!DOCTYPE html>
<html>
<head>
 <title> 2048-game </title>
 <meta charset="utf-8" />
 <style media="screen">
 #game {
 display: none;
 position: absolute;
 left: 0px;
 top: 0px;
 right: 0px;
 bottom: 0px;
 background-color: #9DA5C3;
 opacity: 0.5;
 z-index: 1;
 }
 .clear:after {
 content: "";
 display: table;
 clear: both;
 }
 .left {
 float: left;
 }
 .right {
 float: right;
 }
 .scoreShow {
 height: 50px;
 text-align: center;
 line-height: 50px;
 }
 .model {
 text-decoration: none;
 color: white;
 background-color: #bbada0;
 font-size: 36px;
 border-radius: 10px;
 }
 .head {
 width: 480px;
 height: 50px;
 margin: 0 auto;
 font-size: 25px;
 }
 #gridPanel {
 width: 480px;
 height: 480px;
 margin: 0 auto;
 background-color: #bbada0;
 border-radius: 10px;
 position: relative;
 z-index: 1;
 }
 .grid,
 .cell {
 width: 100px;
 height: 100px;
 border-radius: 6px;
 }
 .grid {
 background-color: #ccc0b3;
 float: left;
 margin: 16px 0 0 16px;
 }
 .cell {
 position: absolute;
 font-size: 60px;
 text-align: center;
 line-height: 100px;
 color: #fff;
 }
 .n2 {
 background-color: #eee3da
 }
 .n4 {
 background-color: #ede0c8
 }
 .n8 {
 background-color: #f2b179
 }
 .n16 {
 background-color: #f59563
 }
 .n32 {
 background-color: #f67c5f
 }
 .n64 {
 background-color: #f65e3b
 }
 .n128 {
 background-color: #edcf72
 }
 .n256 {
 background-color: #edcc61
 }
 .n512 {
 background-color: #9c0
 }
 .n1024 {
 background-color: #33b5e5
 }
 .n2048 {
 background-color: #09c
 }
 .n4096 {
 background-color: #a6c
 }
 .n8192 {
 background-color: #93c
 }
 .n2,
 .n4 {
 color: #776e65
 }
 #gameover {
 width: 100%;
 display: none;
 position: fixed;
 left: 50%;
 right: 50%;
 top: 148px;
 width: 220px;
 height: 200px;
 border-radius: 10px;
 background-color: white;
 margin-left: -110px;
 text-align: center;
 z-index: 5;
 }
 #gameover>a {
 display: inline-block;
 width: 170px;
 height: 50px;
 border-radius: 10px;
 text-decoration: none;
 background-color: #9F8D77;
 color: white;
 font-size: 36px;
 }
 </style>
</head>
<body>
 <div id="game">
 </div>
 <div class="head clear">
 <div class="scoreShow left">
 Score:

 </div>
 <div class="selction right" onclick="getModel(event)">
 <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="model" value="3">3X3</a>
 <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="model" value="4">4X4</a>
 <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="model" type="button">5X5</a>
 <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="model" type="button">6X6</a>
 <!-- <input type="text" id="model"> -->
 <!-- <button type="button" name="button" id="set">设置游戏</button> -->
 </div>
 </div>
 <div id="gridPanel">
 </div>
 <div id="gameover">
 <h1 id="Score"></h1>
 <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="again" onclick="obj.gameStart()">Try again</a>
 </div>
 <script type="text/javascript">
 var arr = [];
 function $(id) {
 return document.getElementById(id);
 }
 function C(cls) {
 return document.getElementsByClassName(cls);
 }
 var obj = {
 ROW: 4,
 CELL: 4,
 r: 0,
 c: 0,
 f: 0, //r行 c列 f查找的下一位置
 keyCd: 0,
 score: 0,
 createEle: 0, //是否需要创建元素
 eleFragment: "", //文档片段变量
 //游戏开始
 gameStart: function() {
 obj.init();
 document.onkeydown = function(e) { //自动获得事件对象
 switch (e.keyCode) { //判断按键号
 case 37:
 obj.keyCd = 1;
 obj.moveLeft();
 break;
 case 38:
 obj.keyCd = 2;
 obj.moveUp();
 break;
 case 39:
 obj.keyCd = 1;
 obj.moveRight();
 break;
 case 40:
 obj.keyCd = 2;
 obj.moveDown();
 break;
 }
 $("score").innerHTML = obj.score; //更新分数
 }
 },
 //初始化
 init: function() {
 obj.eleFragment = document.createDocumentFragment();
 for (r = 0; r < obj.ROW; r++) {
 arr.push([]);
 for (c = 0; c < obj.CELL; c++) {
 arr[r][c] = 0;
 if (obj.createEle == 1) {
 obj.create(r, c);
 }
 }
 }
 if (obj.createEle == 1) {
 obj.createEle = 0;
 $("gridPanel").innerHTML = ""; //清空原有的元素
 $("gridPanel").appendChild(obj.eleFragment); //添加元素
 }
 obj.score = 0;
 $("score").innerHTML = obj.score;
 $("game").style.display = "none";
 $("gameover").style.display = "none";
 obj.random(); //开始游戏随机生成两个数
 obj.random();
 obj.updateView();
 },
 //创建div元素,添加到gridPanel中
 create: function(r, c) {
 var grid, cell;
 var increment = 14,
 grWidth, grHeight, grMarginTop, grMarginLeft, ceWidth, ceHight;
 grid = document.createElement("div");
 cell = document.createElement("div");
 grid.id = "g" + r + c;
 grid.className = "grid";
 cell.id = "c" + r + c;
 cell.className = "cell";

 if (obj.ROW == 3) {
 increment = 24;
 } else if (obj.ROW == 4) {
 increment = 18;
 }
 grWidth = grHeight = ceWidth = ceHight = 66 + (6 - obj.ROW) * increment; //优化后
 grMarginTop = grMarginLeft = (480 - grWidth * obj.ROW) / (obj.ROW + 1);
 grid.style.width = grWidth + "px";
 grid.style.height = grHeight + "px";
 grid.style.marginTop = grMarginTop + "px";
 grid.style.marginLeft = grMarginLeft + "px";
 cell.style.width = ceWidth + "px";
 cell.style.height = ceHight + "px";
 cell.style.top = grMarginTop + r * (grMarginTop + ceWidth) + "px";
 cell.style.left = grMarginLeft + c * (grMarginLeft + ceHight) + "px";
 cell.style.lineHeight = ceHight + "px";
 cell.style.fontSize = 30 + (6 - obj.ROW) * 10 + "px";
 //优化前
 /*if (obj.ROW == 3) {
 grid.style.width = "140px";
 grid.style.height = "140px";
 grid.style.margin = "15px 0 0 15px";
 cell.style.width = "140px";
 cell.style.height = "140px";
 cell.style.top = 15 + r * 155 + "px"; //设置距离上一位置的高度
 cell.style.left = 15 + c * 155 + "px"; //设置离左一位置的距离
 cell.style.lineHeight = "140px";
 } else if (obj.ROW == 4) {
 grid.style.width = "100px";
 grid.style.height = "100px";
 grid.style.margin = "16px 0 0 16px";
 cell.style.width = "100px";
 cell.style.height = "100px";
 cell.style.top = 16 + r * 116 + "px";
 cell.style.left = 16 + c * 116 + "px";
 cell.style.lineHeight = "100px";
 } else if (obj.ROW == 5) {
 grid.style.width = "75px";
 grid.style.height = "75px";
 grid.style.margin = "17.5px 0 0 17.5px";
 cell.style.width = "75px";
 cell.style.height = "75px";
 cell.style.top = 17.5 + r * 92.5 + "px";
 cell.style.left = 17.5 + c * 92.5 + "px";
 cell.style.fontSize = "40px";
 cell.style.lineHeight = "75px";
 } else if (obj.ROW == 6) {
 grid.style.width = "66px";
 grid.style.height = "66px";
 grid.style.margin = "12px 0 0 12px";
 cell.style.width = "66px";
 cell.style.height = "66px";
 cell.style.top = 12 + r * 78 + "px";
 cell.style.left = 12 + c * 78 + "px";
 cell.style.fontSize = "30px";
 cell.style.lineHeight = "66px";
 }*/
 obj.eleFragment.appendChild(grid);
 obj.eleFragment.appendChild(cell);
 },
 //随机产生一个新的数
 random: function() {
 while (1) {
 var row = Math.floor(Math.random() * obj.ROW);
 var cell = Math.floor(Math.random() * obj.CELL);
 if (arr[row][cell] == 0) { //判断生成的随机数位置为0才随机生成2或4
 arr[row][cell] = (Math.random() > 0.5) ? 4 : 2;
 break;
 }
 }
 // var row = Math.floor(Math.random() * 4);
 // var cell = Math.floor(Math.random() * 4);
 // if (arr[row][cell] == 0) { //判断生成的随机数位置为0才随机生成2或4
 // arr[row][cell] = (Math.random() > 0.5) ? 4 : 2;
 // return;
 // }
 // obj.random();//递归影响执行效率
 },
 //更新页面
 updateView: function() {
 var win = 0;
 for (r = 0; r < obj.ROW; r++) {
 for (c = 0; c < obj.CELL; c++) {
 if (arr[r][c] == 0) { //值为0的不显示
 $("c" + r + c).innerHTML = ""; //0不显示
 $("c" + r + c).className = "cell" //清除样式
 } else {
 $("c" + r + c).innerHTML = arr[r][c];
 $("c" + r + c).className = "cell n" + arr[r][c]; //添加不同数字的颜色
 if (obj.ROW == 3 && arr[r][c] == 1024) {
 win = 1;
 } else if (obj.ROW == 4 && arr[r][c] == 2048) {
 win = 1;
 } else if (obj.ROW == 5 && arr[r][c] == 4096) {
 win = 1;
 } else if (obj.ROW == 6 && arr[r][c] == 8192) {
 win = 1;
 }
 }
 }
 }
 if (win == 1) { //通关
 $("game").style.display = "block";
 $("gameover").style.display = "block";
 $("Score").innerHTML = "You win!<br>Score:" + obj.score;
 }
 if (obj.isGameOver()) { //游戏失败
 $("game").style.display = "block";
 $("gameover").style.display = "block";
 $("Score").innerHTML = "GAME OVER!<br>Score:" + obj.score;
 console.log("gameover");
 }
 },
 //游戏失败
 isGameOver: function() {
 for (r = 0; r < obj.ROW; r++) {
 for (c = 0; c < obj.CELL; c++) {
 if (arr[r][c] == 0) { //有0还不是gameover
 return false;
 } else if (c != obj.CELL - 1 && arr[r][c] == arr[r][c + 1]) { //左往右 前一个和下一个不相等
 return false;
 } else if (r != obj.ROW - 1 && arr[r][c] == arr[r + 1][c]) { //上往下 上一个和下一个不相等
 return false;
 }
 }
 }
 return true;
 },
 //查找下一个不为0的数值的位置
 find: function(r, c, start, condition, direction) {
 if (obj.keyCd == 2) { //上下按键
 if (direction == 1) { //向上按键 f++
 for (var f = start; f < condition; f += direction) {
 if (arr[f][c] != 0) {
 return f;
 }
 }
 } else { //向下按键 f--
 for (var f = start; f >= condition; f += direction) {
 if (arr[f][c] != 0) {
 return f;
 }
 }
 }
 } else { //左右按键
 if (direction == 1) { //左按键 f++
 for (var f = start; f < condition; f += direction) {
 if (arr[r][f] != 0) {
 return f;
 }
 }
 } else { //右按键 f--
 for (var f = start; f >= condition; f += direction) {
 if (arr[r][f] != 0) {
 return f;
 }
 }
 }
 }
 return null; //循环结束仍然没有找到!=0的数值,返回null
 },
 //左按键的处理
 dealToLeft: function(r) {
 var next;
 for (c = 0; c < obj.ROW; c++) {
 next = obj.find(r, c, c + 1, obj.CELL, 1); //找出第一个不为0的位置
 if (next == null) break; //没有找到就返回
 //如果当前位置为0
 if (arr[r][c] == 0) {
 arr[r][c] = arr[r][next]; //把找到的不为0的数值替换为当前位置的值
 arr[r][next] = 0; //找到的位置清0
 c--; //再次循环多一次,查看后面否有值与替换后的值相同,
 } else if (arr[r][c] == arr[r][next]) { //如果当前位置与找到的位置数值相等,则相加
 arr[r][c] *= 2;
 arr[r][next] = 0;
 obj.score += arr[r][c];
 }
 }
 },
 move: function(itertor) {
 var before, //没处理前
 after; //after处理后
 before = arr.toString();
 itertor(); //执行for函数
 after = arr.toString();
 if (before != after) { //前后对比,如果不同就update
 obj.random();
 obj.updateView();
 }
 },
 moveLeft: function() {
 obj.move(function() {
 for (r = 0; r < obj.ROW; r++) {
 obj.dealToLeft(r);
 }
 })
 // if 当前位置 不为零
 // 从当前位置,下一个成员开始,遍历,
 // 如果找到,与当前位置相等的数,
 // 两者相加,并把不为零的成员,设置为零
 // 如果 当前位置是 零
 // 从当前位置下一个成员开始遍历
 // 如果找到 第一个不为零的成员
 // 当前位置数值设置为这个不为零的成员的值 ,并且把那个不为零的成员设置为 0
 },
 //右按键处理
 dealToRight: function(r) {
 var next;
 for (c = obj.CELL - 1; c >= 0; c--) {
 next = obj.find(r, c, c - 1, 0, -1); //找出第一个不为0的位置
 if (next == null) break; //没有找到就返回
 //如果当前位置为0
 if (arr[r][c] == 0) {
 arr[r][c] = arr[r][next]; //把找到的不为0的数值替换为当前位置的值
 arr[r][next] = 0; //找到的位置清0
 c++; //再次循环多一次,查看后面否有值与替换后的值相同,
 } else if (arr[r][c] == arr[r][next]) { //如果当前位置与找到的位置数值相等,则相加
 arr[r][c] *= 2;
 arr[r][next] = 0;
 obj.score += arr[r][c];
 }
 }
 },
 moveRight: function() {
 obj.move(function() {
 for (r = 0; r < obj.ROW; r++) {
 obj.dealToRight(r);
 }
 })
 },
 //上按键处理
 dealToUp: function(c) {
 var next;
 for (r = 0; r < obj.ROW; r++) {
 next = obj.find(r, c, r + 1, obj.ROW, 1); //找出第一个不为0的位置
 if (next == null) break;
 //如果当前位置为0
 if (arr[r][c] == 0) {
 arr[r][c] = arr[next][c]; //把找到的不为0的数值替换为当前位置的值
 arr[next][c] = 0; //找到的位置清0
 r--; //再次循环多一次,查看后面否有值与替换后的值相同
 } else if (arr[r][c] == arr[next][c]) { //如果当前位置与找到的位置数值相等,则相加
 arr[r][c] *= 2;
 arr[next][c] = 0;
 obj.score += arr[r][c];
 }
 }
 },
 moveUp: function() {
 obj.move(function() {
 for (c = 0; c < obj.CELL; c++) {
 obj.dealToUp(c);
 }
 })
 },
 //下按键处理
 dealToDown: function(c) {
 var next;
 for (r = obj.ROW - 1; r >= 0; r--) {
 next = obj.find(r, c, r - 1, 0, -1); //找出第一个不为0的位置
 if (next == null) {
 break;
 }
 //如果当前位置为0
 if (arr[r][c] == 0) {
 arr[r][c] = arr[next][c]; //把找到的不为0的数值替换为当前位置的值
 arr[next][c] = 0; //找到的位置清0
 r++; //再次循环多一次,查看后面否有值与替换后的值相同
 } else if (arr[r][c] == arr[next][c]) { //如果当前位置与找到的位置数值相等,则相加
 arr[r][c] *= 2;
 arr[next][c] = 0;
 obj.score += arr[r][c];
 }
 }
 },
 moveDown: function() {
 obj.move(function() {
 for (c = 0; c < obj.CELL; c++) {
 obj.dealToDown(c);
 }
 })
 }
 }
 window.onload = function() {
 obj.createEle = 1;
 obj.gameStart();
 }
 //切换模式
 function getModel(e) { //事件冒泡获取a元素
 var a = e.target,
 modelValue = 4;
 if (a.nodeName == "A") {
 if (a.innerHTML == "3X3") {
 modelValue = 3;
 } else if (a.innerHTML == "4X4") {
 modelValue = 4;
 } else if (a.innerHTML == "5X5") {
 modelValue = 5;
 } else if (a.innerHTML == "6X6") {
 modelValue = 6;
 }
 obj.ROW = obj.CELL = modelValue;
 obj.createEle = 1; //需要创建格子div元素的标志
 obj.gameStart();
 }
 }
 // var modelValue = parseInt($("model").value);
 // if (isNaN(modelValue)) {
 // modelValue = 4; //默认是4*4
 // }
 // if (modelValue <= 2 || modelValue > 6) return; //2格或者大于6格无效
 // obj.ROW = modelValue;
 // obj.CELL = modelValue;
 // obj.createEle = 1;
 // obj.gameStart();
 // console.log(modelValue);
 // }
 </script>
</body>
</html>
host 连接数据库所在的主机名. (默认: localhost)
port 连接端口. (默认: 3306)
localAddress 用于TCP连接的IP地址. (可选)
socketPath 链接到unix域的路径。在使用host和port时该参数会被忽略.
user MySQL用户的用户名.
password MySQL用户的密码.
database 链接到的数据库名称 (可选).
charset 连接的字符集. (默认: ‘UTF8_GENERAL_CI’.设置该值要使用大写!)
timezone 储存本地时间的时区. (默认: ‘local’)
stringifyObjects 是否序列化对象. See issue #501. (默认: ‘false’)
insecureAuth 是否允许旧的身份验证方法连接到数据库实例. (默认: false)
typeCast 确定是否讲column值转换为本地JavaScript类型列值. (默认: true)
queryFormat 自定义的查询语句格式化函数.
supportBigNumbers 数据库处理大数字(长整型和含小数),时应该启用 (默认: false).
bigNumberStrings 启用 supportBigNumbers和bigNumberStrings 并强制这些数字以字符串的方式返回(默认: false).
dateStrings 强制日期类型(TIMESTAMP, DATETIME, DATE)以字符串返回,而不是一javascript Date对象返回. (默认: false)
debug 是否开启调试. (默认: false)
multipleStatements 是否允许在一个query中传递多个查询语句. (Default: false)
flags 链接标志.
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
*{margin:0; padding:0;}
@-webkit-keyframes demo{
 from{ left:0;}
 to{ left:-113px;}
}
.box{ width:120px; height:400px; border:1px solid #000; margin:100px auto; position:relative; overflow:hidden;}
.bar{ position:absolute; left:0; top:0; width:500px; height:400px; background: -webkit-repeating-linear-gradient(-45deg , red 0px, red 20px, #fff 20px, #fff 40px, blue 40px, blue 60px, #fff 60px, #fff 80px); animation:demo 2s linear infinite; }
</style>
<script>
window.onload = function(){
 var oC1 = document.querySelectorAll('input')[0];
 var oC2 = document.querySelectorAll('input')[1];
 var oBar = document.querySelector('.box .bar');
 oC1.onchange = oC2.onchange = function(){
 oBar.style.background = '-webkit-repeating-linear-gradient(-45deg , '+oC1.value+' 0px, '+oC1.value+' 20px, #fff 20px, #fff 40px, '+oC2.value+' 40px, '+oC2.value+' 60px, #fff 60px, #fff 80px)';
 };
};
</script>
</head>
<body>
 <input type="color" value="#ff0000" />
 <input type="color" value="#0000ff" /> 
 <div class="box">
 <div class="bar"></div>
 </div>
</body>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

还可以使用字符串连接数据库例如:

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

您可能感兴趣的文章:

  • JavaScript 2048
    游戏实例代码(简单易懂)
  • 使用Javascript写的2048小游戏
  • Javascript编写2048小游戏
  • javascript制作2048游戏
  • javascript版2048小游戏
  • javascript实现2048游戏示例
var connection = mysql.createConnection('mysql://user:pass@host/db?debug=true&charset=BIG5_CHINESE_CI&timezone=-0700');

您可能感兴趣的文章:

  • JS简单判断滚动条的滚动方向实现方法
  • 原生js封装自定义滚动条
  • 原生js仿浏览器滚动条效果
  • js实现简易垂直滚动条
  • 基于JavaScript实现自定义滚动条
  • JavaScript实现垂直滚动条效果
  • js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
  • js
    简易版滚动条实例(适用于移动端H5开发)

2、结束数据库连接end()destroy()

end()接受一个回调函数,并且会在query结束之后才触发,如果query出错,仍然会终止链接,错误会传递到回调函数中处理。

destroy()立即终止数据库连接,即使还有query没有完成,之后的回调函数也不会在触发。

3、创建连接池 createPool(Object) 
Object和createConnection参数相同。

可以监听connection事件,并设置session值

pool.on('connection', function(connection) {
 connection.query('SET SESSION auto_increment_increment=1')
});

connection.release()释放链接到连接池。如果需要关闭连接并且删除,需要使用connection.destroy()

pool除了接受和connection相同的参数外,还接受几个扩展的参数

createConnection 用于创建链接的函数. (Default: mysql.createConnection)
waitForConnections 决定当没有连接池或者链接数打到最大值时pool的行为. 为true时链接会被放入队列中在可用是调用,为false时会立即返回error. (Default: true)
connectionLimit 最大连接数. (Default: 10)
queueLimit 连接池中连接请求的烈的最大长度,超过这个长度就会报错,值为0时没有限制. (Default: 0)

4、连接池集群

允许不同的host链接

// create
var poolCluster = mysql.createPoolCluster();
poolCluster.add(config); // anonymous group
poolCluster.add('MASTER', masterConfig);
poolCluster.add('SLAVE1', slave1Config);
poolCluster.add('SLAVE2', slave2Config);
// Target Group : ALL(anonymous, MASTER, SLAVE1-2), Selector : round-robin(default)
poolCluster.getConnection(function (err, connection) {});
// Target Group : MASTER, Selector : round-robin
poolCluster.getConnection('MASTER', function (err, connection) {});
// Target Group : SLAVE1-2, Selector : order
// If can't connect to SLAVE1, return SLAVE2. (remove SLAVE1 in the cluster)
poolCluster.on('remove', function (nodeId) {
   console.log('REMOVED NODE : ' + nodeId); // nodeId = SLAVE1
});
poolCluster.getConnection('SLAVE*', 'ORDER', function (err, connection) {});
// of namespace : of(pattern, selector)
poolCluster.of('*').getConnection(function (err, connection) {});
var pool = poolCluster.of('SLAVE*', 'RANDOM');
pool.getConnection(function (err, connection) {});
pool.getConnection(function (err, connection) {});
// destroy
poolCluster.end();

链接集群的可选参数

canRetry 值为true时,允许连接失败时重试(Default: true)
removeNodeErrorCount 当连接失败时 errorCount 值会增加. 当errorCount 值大于 removeNodeErrorCount 将会从PoolCluster中删除一个节点. (Default: 5)
defaultSelector 默认选择器. (Default: RR)
RR 循环. (Round-Robin)
RANDOM 通过随机函数选择节点.
ORDER 无条件地选择第一个可用节点.

5、切换用户/改变连接状态

Mysql允许在比断开连接的的情况下切换用户

connection.changeUser({user : 'john'}, function(err) {
 if (err) throw err;
});

参数

user 新的用户 (默认为早前的一个).
password 新用户的新密码 (默认为早前的一个).
charset 新字符集 (默认为早前的一个).
database 新数据库名称 (默认为早前的一个).

发表评论

电子邮件地址不会被公开。 必填项已用*标注

标签:
网站地图xml地图