nodejs查询数据库 执行顺序不太对。。怎么同步查询-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

2016-02-07 18:06:52 3672 1

直接上代码

var resu;
var db = require("./dbs.js");
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.<anonymous> (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句有问题。。

取消 提交回答
全部回答(1)
  • 我的中国
    2019-07-17 18:28:16

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

    return mysql.table('SalesInfo').xxxxx
    然后

    db.searchDb().then(function(data) {

    })

    0 0
相关问答

1

回答

OSS 能对文件夹进行配额吗

2016-11-07 23:53:02 2223浏览量 回答数 1

0

回答

.net查询指定条件的数据怎么查询啊?

2019-09-19 19:46:23 425浏览量 回答数 0

1

回答

怎么查询数据库密码

2014-04-15 05:09:48 10063浏览量 回答数 1

0

回答

查询不到日志数据怎么办?

2017-10-24 10:12:46 1875浏览量 回答数 0

1

回答

查找命令的可执行文件是去哪查找的? 怎么对其进行设置及添加?

2019-12-31 15:42:11 414浏览量 回答数 1

2

回答

在单个语句中用Java执行多个查询

2020-05-08 15:31:25 572浏览量 回答数 2

1

回答

在单个语句中用Java执行多个查询

2020-05-10 17:49:13 384浏览量 回答数 1

1

回答

如图,nodejs云函数不能用import导入模块吗?在web编辑器的终端里执行 node ./in

2022-06-08 17:33:22 225浏览量 回答数 1

1

回答

hologres 能否进行时间开窗? 也就是一段时间的开窗函数

2022-09-22 10:40:01 57浏览量 回答数 1
+关注
我的中国
R&amp;S网络资深工程师 ,阿里云论坛官方版主,阿里云云计算ACP,春考教学网站长,IT技术晋级之路专辑作者
文章
问答
问答排行榜
最热
最新
相关电子书
更多
JS 语言在引擎级别的执行过程
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载