小白求解~~~~~nodejs+mysql怎么解决嵌套connection.query问题
发布于 10 年前 作者 liuyang9189 11967 次预览 最后一次回复是 10 年前 来自 问答
connection.query(login_user_device+deviceid,
function selectCb(err, results, fields) {
if (err) {
throw err;
}else{
connection.query('SELECT * FROM cash_user WHERE uid='+results[0].uid+'',
function selectCb(err, resultss, fields) {
if (err) {
throw err;
}else{
connection.query("SELECT * FROM cash_daily_coin WHERE uid_fk="+results[0].uid+"",
function selectCb(err, daily, fields) {
if (err) {
throw err;
}else{
var datas = resultss[0];
datas.deviceid = deviceid;
datas.todaycoin = daily[0].todaycoin;
req.session["user"] = datas;
res.jsonp(datas);//返回JSON
}
}
);
}
}
);
}
}
);
12 回复
首先我觉的你代码需要格式化一下。然后这种嵌套问题你可以看一下async和bluebird的文档都是解决嵌套的,比如async的waterfall方法
eventproxy
首先,LZ要把代码缩进一下啊,要不别人怎么帮你看。
第二,从大意上看,你需要了解一下async或者Promise,Node.js是异步的,处理这些SQL也是异步的。而一般大家的逻辑思维和业务流程是同步的,所以你可能需要类似这样的东西。
第三,按照你的问题的思路回答,彻底解决嵌套问题,是做不了的,即:
上面这种想法和思路是同步思维,在Node里面做不了,你需要研究一下async类似的这种方式。至于异步到底适不适合做同步的流程,已经老生常谈的话题。
1、generator,promise,co(es6) 2、bluebird,thunkify(es5) 3、async await(es7)
@alsotang 突然发现没法编辑他的帖子了 0. 0
你们都曲线救国么
你们这帮人,一回答问题就是一堆三方库,让别人怎么学原理。
@xadillax 现在好了~上次忘记加了 sorry。。。
@mcc285361464 谢谢,已经使用async
@echoloyuk 迟来的感谢,已通过async解决。
@wfsovereign 迟来的感谢,已通过async解决。
@MiguelValentine 迟来的感谢,已通过async解决。