node.js - nodejs查询数据库 执行顺序不太对。。怎么同步查询

 会展小控 发布于 2022-11-02 12:08

直接上代码

var resu;
var db = require("./dbs.js?1.2.1");
var http=require("http");
var server=http.createServer(function(req,res){
    if(req.url!=="/favicon.ico"){
        resu = db.searchDb();
        res.writeHead(200,{"Content-Type":"text/plain","Access-Control-Allow-Origin":"*"});
        res.write(resu);
    }
    res.end();
});
server.listen(1338,"localhost",function(){
    console.log("开始监听...");
});

这个是数据库查询的文件

exports.searchDb =function(){
var Mysql = require('node-mysql-promise');
var mysql = Mysql.createConnection({
    host: 'dm191867.my3w.com',
    user: 'dm191867',
    password: '123',
   // database:'dm191867_db',
});
//SELECT * FROM table;
mysql.table('SalesInfo').field('OrderNO,OrderDate,CustomID,Quantity,Money,OrderStatus').select().then(function (data) {
    return data;
    console.log(data);
}).catch(function (e) {
    console.log(e);
});
}

报错信息

_http_outgoing.js:439
    throw new TypeError('first argument must be a string or Buffer');
    ^

TypeError: first argument must be a string or Buffer
    at ServerResponse.OutgoingMessage.write (_http_outgoing.js:439:11)
    at Server. (c:\Users\lenovo\WebstormProjects\bootstrap\myserver.js:8:13)
    at emitTwo (events.js:87:13)
    at Server.emit (events.js:172:7)
    at HTTPParser.parserOnIncoming [as onIncoming] (_http_server.js:528:12)
    at HTTPParser.parserOnHeadersComplete (_http_common.js:88:23)

刚刚接触nodejs 被搞得头大 请大神帮忙!

按照大神的方法改好了,但是遇到了新的问题。我现在mysql.query('XXXXXX')中的sql句是固定的。我想动态生成不同的sql语句,就在searchDb的参数里加了个sqldata。
代码如下:

exports.searchDb =function (sqldata,resultCallback){
var Mysql = require('node-mysql-promise');
var mysql = Mysql.createConnection({
host: 'qdm19.my3w.com',
user: 'qdm19',
password: '123E',
database:'qdm19_db',
});
//SELECT XX FROM table;
mysql.query('SELECT DISTINCT %s,%s,%s,%s,%s,%s FROM %s WHERE %s',sqldata).then(function (data)
{
console.log(data);
resultCallback(null,data);
}).catch(function (e) {
console.log(e);
resultCallback(e);
});
}

其中sqldata是个数组

var sqldata=
[ 
 'OrderNO',
 'DATE_FORMAT( OrderDate , "%Y-%m-%d")OrderDate',
 'c.CustomName',
 '(select count(Quantity) from SalesInfo where OrderNo=s.OrderNO)Quantity',
 '(select sum(Money) from SalesInfo where OrderNo=s.OrderNO)Money',
 'OrderStatus',
 'SalesInfo as s left join Customer as c on s.CustomID=c.CustomNo',
 '1=1'
] 

换成这种形式以后 第一次查询是没有问题的 再点一次查询就会报错说sql句有问题。。

4 个回答
  • 虽然我没用过,但是你应该把promise返回吧?

    return mysql.table('SalesInfo').xxxxx

    然后

    db.searchDb().then(function(data) {
    
    })
    2022-11-04 06:53 回答
  • return 的数据在回调函数中、传回来应该是undefined吧、可以把回调传进去、

    2022-11-04 07:01 回答
  • 学习一下async库

    2022-11-04 07:06 回答
  • var resu;
    var db = require("./dbs.js?1.2.1");
    var http=require("http");
    var server=http.createServer(function(req,res){
        if(req.url!=="/favicon.ico"){
            db.searchDb(function(error,resultData){
                                      res.writeHead(200,{"Content-Type":"text/plain","Access-Control-Allow-Origin":"*"});
            if(error){
                //返回错误信息
                res.write(error);
            }else{
                res.write(resultData);
            }
            
            res.end();
            });
        }
        
    });
    server.listen(1338,"localhost",function(){
        console.log("开始监听...");
    });

    数据库查询

    exports.searchDb =function(resultCallback){
    var Mysql = require('node-mysql-promise');
    var mysql = Mysql.createConnection({
        host: 'dm191867.my3w.com',
        user: 'dm191867',
        password: '123',
       // database:'dm191867_db',
    });
    //SELECT * FROM table;
    mysql.table('SalesInfo').field('OrderNO,OrderDate,CustomID,Quantity,Money,OrderStatus').select().then(function (data) {
        //return data;
        console.log(data);
        resultCallback(null,data);
    }).catch(function (e) {
        console.log(e);
        resultCallback(e);
    });
    }
    2022-11-04 07:12 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有