node.js+mysql数据库操作

研究了几天,终于完成了cocos、node.js \mysql的数据传递,其中最大的困难在于node.js异步执行,然后查询到的数据,cocos拿不到。
为了让大家少走些弯路,我把 它们分享出来。

  1. cocoscreator
    场景中拖个Label ,
    然后写 个脚本,挂 在Canvas上。把Label拖到右边 mylab上。
    /////脚本如 下
    cc.Class({
    extends: cc.Component,

    properties: {
    mylab: cc.Label,
    },

    // LIFE-CYCLE CALLBACKS:

    onLoad() {
    // this.text = “abc”;
    // this.mylab=this.node.
    // cc.log(this.mylab);

    },

    start() {
    this.sendPostRequest();
    },

    sendPostRequest() {
    var str = “name=zzz&password=123456”
    var ServerLink = “http://127.0.0.1:6868”;
    var xhr = new XMLHttpRequest();
    var response = “”;
    xhr.onreadystatechange = function () {
    if (xhr.readyState == 4 && (xhr.status >= 200 && xhr.status <= 400)) {
    console.log(“连接成功”);
    response = xhr.responseText;
    // successCallback(response);
    //this.text = response;
    console.log(“里面:” + response);
    }
    };

     xhr.open("POST", ServerLink, false);//false表示同步,设置true返回不了数据
    // xhr.setHeader("Access-Control-Allow-Origin","*");
    //xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
     xhr.send(str);
     //this.text = response;
     console.log(response);
    // response=JSON.stringify(response);
     //var txt=[{"name":"zzz","pws":"123"}];
    
     response = JSON.parse(response);
     cc.log(response[0]["name"]);
    
    
     console.log("外面:" + response);
     //response= JSON.parse(response);
     this.mylab.string = response[0]["pws"];
    

    },
    // update (dt) {
    // cc.log(“外面:”+this.text);
    // },
    });

////另外新建 一个JS,好像不能和 cocos放在一起,要放在另外的一个文件夹中。
/////数据库注意修改下,我用的数据库叫whq ,里面有个表叫 go,表里两个字段name,pws
////这个文件保存后,在vs code中,扩展商店中 安装 code runner,然后在脚本里右击,选择 run code,就可以启动监听了。当然也可以在命令行窗口中用 node 启动它。

console.info("------ mysql query() ------");
console.info();
var http = require(“http”); // TODO: 引入HTTP模块
var querystring = require(‘querystring’);
//var mysql = require(’/usr/local/lib/node_modules/mysql’); // TODO: 引入mysql模块
var mysql = require(‘mysql’);
console.log(“Now start HTTP server on port 6868…”);
console.info();
/**

  • 创建数据库连接
    /
    var connection = mysql.createConnection({
    host: “localhost”, // TODO: 主机地址
    user: “root”, // TODO: 数据库用户名
    password: “123456”, // TODO: 数据库密码
    database: “whq”, // 改成 自己的数据库名字
    port: 3306 // TODO: 端口号
    });
    /
    *

  • 创建HTTP服务器
    */
    http.createServer(function (req, res) {
    var body = “”;
    req.on(‘data’, function (chunk) {
    body += chunk; //一定要使用+=,如果body=chunk,因为请求favicon.ico,body会等于{}
    //console.log(“chunk:”, chunk);

    });
    // console.log(“body:”, body);
    req.on(‘end’, function () {
    // 解析参数
    body = querystring.parse(body); //将一个字符串反序列化为一个对象
    console.log(“body:”, body); //下面要把 表名 go 改成你自己的数据库里的表名
    connection.query(‘select * from go where name = "’ + body.name + ‘"’, function (error, rows, fields) {
    res.setHeader(“Access-Control-Allow-Origin”, “*”);
    res.writeHead(200, { “Contenta-Type”: “text/html;charset=utf8” });
    //res.write(“

    测试 Node.js - MySQL 数据库查询操作!


    ”);
    console.log(rows);
    res.end(JSON.stringify(rows));
    });
    });
    }).listen(6868); // TODO: 监听6868端口号

//////在cocoscreat 中,开始调试,应该可以看到Label里的内容变化了。
/////后续可以用UI组件,做登录,注册啥 的

4赞

别忘记 了安装好node.js,mysql数据库
使用淘宝 NPM 镜像
npm install -g cnpm --registry=https://registry.npm.taobao.org

cnpm install mysql

安装相应库

感觉只有是你不会 这不是很简单么…

支持:slightly_smiling:

里面有很多坑,我在论坛上也没找到相应的答案啊。自己查询了许多资料,经过不断尝试完成的。

这些坑,对于新手来说,如果自己弄,估计没有10天8天的,搞不下来。与其浪费这么时间,不如共享啊。

1赞

想请问一下如果要发送多个请求怎么办?

mark一下,已备后用

都看到结果了,你当然觉得简单,

我怎么没看出 哪里有异步执行的过程了? 或者你认为的这个异步执行是个什么方式规则?