我在本地主机上获得了以下代码:
/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)
})
有用。
我需要做什么(或学习)?
undefined
因为未指定返回值,所以get函数返回。您可以为回调函数指定一个返回值,但外部函数不知道或不在乎。如果您想要预期的行为,则需要将回调传递给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中异步行为的一般概述,请查看此答案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句