javascript - 函数返回 undefined object

标签 javascript node.js object promise

我有一个函数,每次调用该函数时都会返回一个 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/

相关文章:

javascript - 主干 router.navigate 不重定向

node.js - JSON 不得超过 1000000 字节

javascript - jQuery:单击函数绑定(bind)在带有闭包修复的 for 循环中

javascript - 将javascript对象转换为 Backbone 模型

javascript - 地铁 build 者 : SyntaxError: Unexpected token = after upgrading to React Native 0. 65.1

javascript - 解释一下这个 JavaScript onload 函数

javascript - ERR_ADDRESS_UNREACHABLE 在 Chrome Android 中打开我的本地主机

javascript - Node.js session 文件存储将中止所有后续请求

javascript - 如何禁用SSL验证nodejs Loopback Request Plugin

java - 在 Java 中将对象序列化为 XML 会忽略我的对象的一些变量字段