Javascript 如何在nodejs中定义运行时属性
我已经为nodejs中的数据库访问定义了以下属性。问题是,我还需要为某个函数定义url参数。因此,我编写了helper函数Javascript 如何在nodejs中定义运行时属性,javascript,node.js,Javascript,Node.js,我已经为nodejs中的数据库访问定义了以下属性。问题是,我还需要为某个函数定义url参数。因此,我编写了helper函数getDataUrl() 但是,我不想调用此函数,而是使用属性config.db.url 我目前正在努力如何做到这一点。我尝试了以下方法: 写入url:getDataUrl()此生成:类型错误:无法读取未定义的属性“db” 调用getDataUrl(),然后写入属性,但这不会覆盖url属性。然后读取该值时发生以下错误:无法读取未定义的属性“url” 写入config.db.u
getDataUrl()
但是,我不想调用此函数,而是使用属性config.db.url
我目前正在努力如何做到这一点。我尝试了以下方法:
url:getDataUrl()
此生成:类型错误:无法读取未定义的属性“db”getDataUrl()
,然后写入属性,但这不会覆盖url属性。然后读取该值时发生以下错误:无法读取未定义的属性“url”
config.db.url=getDataUrl()代码>这也不会覆盖url属性
function getDataUrl() {
var dataUrl = "mongodb://";
if (config.db.username !== undefined) {
dataUrl += config.db.username + ':' + config.db.password + '@';
}
dataUrl += config.db.host + ":" + config.db.port;
dataUrl += '/' + config.db.db
return dataUrl;
}
你可以试试:
你在#2和#3中所说的“这不会覆盖url属性”是什么意思,你如何看待这个结果?它应该可以工作,但当我读取这些值时,我假设这与异步调用有关,或者与异步调用无关?我已经做了一个更新。正如@MartinLinux所观察到的,您在函数中使用了
configs
而不是config
。修正错误,2和3就行了。并使用strict模式,以便对未声明的变量抛出有意义的异常!对不起,这是问题中的一个输入错误,我已经更新了问题。这正是我需要的,谢谢。
function getDataUrl() {
var dataUrl = "mongodb://";
if (config.db.username !== undefined) {
dataUrl += config.db.username + ':' + config.db.password + '@';
}
dataUrl += config.db.host + ":" + config.db.port;
dataUrl += '/' + config.db.db
return dataUrl;
}
var config = {
db: {
db: 'dbname', // the name of the database
host: "12.12.12.12", // the ip adress of the database
port: 10091, // the port of the mongo db
username: "name", //the username if not needed use undefined
password: "pw", // the password for the db access
get url() {
var dataUrl = "mongodb://";
if (this.username)
dataUrl += this.username + ':' + this.password + '@';
dataUrl += this.host + ":" + this.port + '/' + this.db;
return dataUrl;
}
}
};
console.log(config.db.url); // automatically computed on [every!] access