我有一个函数,每次调用该函数时都会返回一个 undefined object 。我想知道是否有解决这个问题的具体方法。在index.js 中,我调用 sqlQuery.getItem 方法并期望它从数据库返回一行,但它每次都返回未定义。
index.js
'use strict';
const Alexa = require('alexa-sdk');
const mysql = require('promise-mysql');
const querydb = require('./sqlQuery.js');
var testSQL = 'SELECT uWeight, uHeight from users where pin=1100';
//querydb.getItem(testSQL);
var values = querydb.getItem(testSQL);
if(values == undefined){
console.log('Error');
}
else{
console.log(values);
}
databaseConnection.js
var mysql = require('promise-mysql');
pool = mysql.createPool({
host: "mytrainerdb.cbh07n2xwds2.us-east-1.rds.amazonaws.com",
database: "trainerdb",
user: "user",
password: "password"
});
function getSqlConnection() {
return pool.getConnection().disposer(function(connection) {
pool.end(connection);
});
}
module.exports = getSqlConnection;
sqlQuery.js
var Promise = require("bluebird");
var getSqlConnection = require('./databaseConnection');
var hello = "hello";
function getItem(sql){
Promise.using(getSqlConnection(), function(connection) {
return connection.query(sql).then(function(rows) {
console.log(rows[0]);
return (rows[0]);
}).catch(function(error) {
return (error);
});
})
}
module.exports.getItem = getItem;
最佳答案
function getItem(sql){
return Promise.using(getSqlConnection(), function(connection) {
return connection.query(sql).then(function(rows) {
console.log(rows[0]);
return (rows[0]);
}).catch(function(error) {
return (error);
});
})
}
注意到第二行的 return 了吗?这会有所不同,但您仍然不会获得值中的实际值 var values = querydb.getItem(testSQL);
,而是您要返回的 promise 。如果在 Promise 对象的 then
回调中 Promise 成功,您将获得该值,如下所示
var valuesPromise = querydb.getItem(testSQL);
valuesPromise.then(function(result) {
//use result here
})
或者简单地
querydb.getItem(testSQL).then(function(result) {
//use result here
})
关于javascript - 函数返回 undefined object ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50709461/