我在本地主机上得到以下代码:
/model/company.js
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : 'admin'
});
module.exports = {
get: function(){
connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
return rows;
})
}
}
/routes/company.js
var Company = require('../models/company')
var express = require('express');
var router = express.Router();
router.route('/companies').get(function(req, res){
console.log(Company.get());
//res.json(Company.get());
})
我已经尝试过一些事情,但我认为事情应该是这样的。
但我的 console.log
返回了 undefined
。我不知道我做错了什么。
如果我这样做:
connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
console.log(rows)
})
它有效。
我需要做什么(或学习)?
最佳答案
您的 get 函数返回 undefined
,因为您没有指定返回值。您为回调函数指定了一个返回值,但您的外部函数不知道也不关心它。如果您想要预期的行为,则需要将回调传递给 get
函数,以访问 rows
变量。
试试这个:
module.exports = {
get: function(callback){
connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
// A 'node-style' callback will usually be callback(error, value)
callback(null, rows);
})
}
}
如果你这样做,你的console.log将会工作:
Company.get(function(error, rows){
console.log(rows);
}
有关 javascript 中异步行为的一般概述,请查看 this answer .
关于javascript - 无法从nodejs + node-mysql 中的模块获取返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30311806/