javascript-Node.js中的MySQL问题-获取所有查询
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-Node.js中的MySQL问题-获取所有查询,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2152字,纯文字阅读大概需要4分钟。
内容图文
我在Node.js中遇到问题,我已经构建了自己的模块来处理某种东西,在此模块中,我有一个函数getList(),可以在其中获取输入到我的配置.
我的源代码是这样的:
var config = {
'limit' : 0
};
var dict = [];
exports.getList = function(db, conf) {
db.query("SELECT id, title FROM animal a " + (config.limit > 0 ? " LIMIT " + config.limit : "" ), function(err, rows, fields) {
if(err) {
console.log(err);
}
for(var key in rows) {
var row = rows[key];
//
dict.push({
'title' : 'Buster',
'animal' : 'Dog',
'age' : '12',
'photo' : 'https://placeholdit.imgix.net/~text?txtsize=24&txt=260×200&w=260&h=200'
});
});
console.log(dict);
console.log(config);
return dict;
}
问题是,当我启动我的应用程序时,第一次将这个脚本称为dict,它为空,第二次从数据库中获取3行,并且每次我重新加载页面时,它都会增加3行.
我试图找出我如何解决此问题,希望大家能在这里为我提供帮助,非常感谢.
解决方法:
您应该将回调传递到db.query中,或者返回promise而不是dist,因为db.query是一种异步方法,因此无法以同步方式调用异步方法.在过去,例如,我们将使用回调
exports.getList = function(db, conf, callback) {
db.query('', function (err, result) {
if(err) return callback(err);
callback(null, result);
});
}
getList(db,conf, function(err, result) {
console.log(result);
});
现在我想建议使用Promise.
exports.getList = function(db, conf) {
return new Promise(function(resolve, reject) {
db.query("SELECT id, title FROM animal a " + (conf.limit > 0 ? " LIMIT " + conf.limit : "" ), function(err, rows, fields) {
if(err) {
reject(err);
return;
}
var dict = [];
for(var key in rows) {
var row = rows[key];
//
dict.push({
'title' : 'Buster',
'animal' : 'Dog',
'age' : '12',
'photo' : 'https://placeholdit.imgix.net/~text?txtsize=24&txt=260×200&w=260&h=200'
});
});
resolve(dict);
});
}
getList(db,config).then(function(result) {
console.log(result);
}).catch(function(e) {
console.log(e);
});
例如,您还可以并行调用两个查询
Promise.all([getList1(db,config), getList2(db,config)]).then(function(result) {
console.log('result of getList1', result[0]);
console.log('result of getList2', result[1]);
});
并保证,您可以将es6生成器与co一起使用,以同步方式调用异步方法
var co = require('co');
co(function* () {
try {
var result = yield getList(db, conf);
// here is your result
} catch(e) {
console.log(e);
}
});
内容总结
以上是互联网集市为您收集整理的javascript-Node.js中的MySQL问题-获取所有查询全部内容,希望文章能够帮你解决javascript-Node.js中的MySQL问题-获取所有查询所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。