javascript – 节点JS异步数据库调用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 节点JS异步数据库调用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2322字,纯文字阅读大概需要4分钟。
内容图文
![javascript – 节点JS异步数据库调用](/upload/InfoBanner/zyjiaocheng/898/c8f3ce286452433cb776b11ddc1a52f9.jpg)
尽管数据库函数没有返回值,但是在获取节点以进行数据库调用而不进行操作时遇到问题.
这是基本的http服务器代码:
var http = require('http');
http.createServer(function (request, response) {
response.writeHead(200, {
'Content-Type': 'text/plain',
'Access-Control-Allow-origin': '*' // implementation of CORS
});
response.end("ok");
;
}).listen(8080,'0.0.0.0');
使用request.on(‘data’)函数,我能够从请求中解码JSON并继续进行数据库调用:
request.on('data', function (chunk) {
var json = JSON.parse(chunk);
var id = parseInt(json["id"]);
response.end(callDatabase(id));
});
数据库函数如下所示:
function callDatabase(id) {
var result;
var connection = mysql.createConnection(
{
host : '192.168.1.14',
user : 'root',
password : '',
database : 'test'
}
);
connection.connect();
var queryString = 'SELECT name FROM test WHERE id = 1';
connection.query(queryString, function(err, rows, fields) {
if (err) throw err;
for (var i in rows) {
result = rows[i].name;
}
});
connection.end();
return result;
}
}
然而,在测试中,这证明我做错了.我知道我可能想要使用节点异步模块,我已经厌倦了.我也尝试过使用瀑布方法,以及在线并行和许多其他教程.我觉得request.on函数应该是并行的,然后数据库调用async,所以当node等待来自数据库服务器的响应时,它可以继续使用任何其他请求,将排队时间保持在最低限度.
如果我错过了解节点js的任何概念,请通知我.
解决方法:
在查询从db返回值之前,您将返回结果并关闭连接.将该代码放在回调中.
修复你的代码,它应该是这样的:
function callDatabase(id) {
var result;
var connection = mysql.createConnection(
{
host : '192.168.1.14',
user : 'root',
password : '',
database : 'test'
}
);
connection.connect();
var queryString = 'SELECT name FROM test WHERE id = 1';
connection.query(queryString, function(err, rows, fields) {
if (err) throw err;
for (var i in rows) {
result = rows[i].name;
}
connection.end();
return result;
});
}
虽然,这只会解决部分问题,因为现在你还在调用response.end(callDatabase(id));在等待查询的响应之前.
为了解决这个问题,你需要返回某种回调.
function callDatabase(id, callback) {
// the method code here...
connection.query(queryString, function(err, rows, fields) {
// code...
// instead of returning the result, invoke the callback!
callback(rows);
});
}
现在你可以像这样调用它:
request.on('data', function (chunk) {
var json = JSON.parse(chunk);
var id = parseInt(json["id"]);
callDatabase(id, function(res) {
response.end(res);
});
});
内容总结
以上是互联网集市为您收集整理的javascript – 节点JS异步数据库调用全部内容,希望文章能够帮你解决javascript – 节点JS异步数据库调用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。