2016-09-28 30 views
0

我是新来的节点,并且遇到了一个简单函数的问题。本质上,该函数接受实体名称(ownerEntity)并查找该实体的URL和端口号以提供GET请求。变量在节点函数内变得不明确

然而,在调用函数时,它抛出一个错误:TypeError: Cannot read property 'URL' of undefined

的功能如下:

const config = require('./index.js'); 

module.exports = function dataServerUrl(ownerEntity) { 

    console.log(ownerEntity); 
    console.log(config.DATA_SERVER); 
    console.log(config.DATA_SERVER.ownerEntity); 

    const url = config.DATA_SERVER.ownerEntity.URL; 
    const port = config.DATA_SERVER.ownerEntity.PORT; 

    const urlParameter = url + ':' + port; 

    return urlParameter; 
}; 

查找击中切入点index.js文件名为config文件夹,看起来像在如下:

module.exports = { 
    DATA_SERVER: { 
    1111: { 
     URL: process.env.SERVER_1_URL, 
     PORT: process.env.SERVER_1_PORT, 
    }, 
    2222: { 
     URL: process.env.SERVER_2_URL, 
     PORT: process.env.SERVER_2_PORT, 
    }, 
    3333: { 
     URL: process.env.SERVER_3_URL, 
     PORT: process.env.SERVER_3_PORT, 
    }, 
    }, 
}; 

对于测试,我把三个控制台登录。console.log s返回以下内容,以便我可以看到ownerEntity变量最初正在通过,DATA_SERVER参数回来,但在查找URL时ownerEntity变得未定义。

1111 
{ '1111': { URL: '0.0.0.0', PORT: '8080' }, 
    '2222': { URL: '192.168.99.100', PORT: '8080' }, 
    '3333': { URL: '192.168.99.100', PORT: '8081' } } 
undefined 

任何帮助将不胜感激。

+0

使用'config.DATA_SERVER [ownerEntity] .URL' – Derek

+0

谢谢@Derek修复它! – slowtokyo

回答

1

你的意思是:

config.DATA_SERVER[ownerEntity] 

而对于动态属性的名称(如由变量和这样提供的),因此

const url = config.DATA_SERVER[ownerEntity].URL; 
const port = config.DATA_SERVER[ownerEntity].PORT; 

用括号标记。

+0

谢谢约瑟夫! – slowtokyo