CNode

小白问题,异步惹的祸

问答
SSevenSharp发布于11 年前最后回复11 年前10 回复4350 浏览0 收藏

这是 index.js 代码:**** var db_sql = require('./mysql_db'); console.log(db_sql.Select_byName('Tom')); 这是 mysql_db.js代码:

var mysql = require('mysql');

var conn =mysql.createConnection({
    host:'localhost',
	user: 'root',
	password:null,
	database:'nodejs',
	port:3306
});

var sql;

exports.Delete_ByName = function(name){
		sql ="delete from User where UserName = '"+name+"'";
		Query();
}
exports.Update_ByName = function(name,val){
		sql = "update User set UserName ='"+val+"' where Username='"+name+"' ";
		Query();
}
 exports.Select_byName = function(name){
		sql = "select * from User where UserName ='"+name+"'";
		return  Query();
}
exports.Insert_Date = function(val){
		sql = "insert into User values("+val+")";
		Query();
}
function Query(){

conn.connect();
conn.query(sql,function(err,results){
	if (err) {
	throw err;
};
	
});
conn.end(function(err){
	if (err) {
		throw err;
	};
	console.log('mysql close');
});

} 问题来了,Select_byName这个返回值results怎么得到?

查看回复

回复 (10)

L
luoyjx#1·11 年前
引用 SevenSharp@luoyjx 是这样吗?

@SevenSharp 恩对,貌似漏掉了个花括号,markdown语法参考这里 http://www.ituring.com.cn/article/775

L
luoyjx#3·11 年前

给代码上下都加上``` ,下次管理员是不会再帮你改了的@i5ting

I
ilovelll#5·11 年前

一般不带这样层层嵌套的,如果你一定要这样写的话,就加个callback,

exports.Select_byName = function(name, callback){
       sql = "select * from User where UserName ='"+name+"'";
       return  Query(callback);
}
function Query(callback){//加callcack

conn.connect();
conn.query(sql,callback);
conn.end(function(err){
   if (err) {
       throw err;
   };
   console.log('mysql close');
});

调用的时候就db_sql.Select_byName(‘Tom’, function(err, results){ console.log(results)})

N
njaulj#6·11 年前
exports.Query= function(sql,callback){
....
....
callback(err,results)
}

S
SevenSharp#7·11 年前
引用 njaulj

@njaulj 那一般逻辑不是分开的吗。。这个写回到函数比较麻烦一些

S
SevenSharp#8·11 年前
引用 njaulj

@njaulj 一般逻辑是怎么写的不分层吗?

N
njaulj#9·11 年前
引用 SevenSharp@njaulj 一般逻辑是怎么写的不分层吗?

@SevenSharp node 的逻辑可以这样写

Db.conn(str)
	.query(sql)
	.exec(callback)


S
SevenSharp#10·11 年前
参与回复
登录后即可参与回复。登录