gpt4 book ai didi

node.js - NodeJS 从 redis 查询中导出变量

转载 作者:可可西里 更新时间:2023-11-01 11:43:08 30 4
gpt4 key购买 nike

我需要能够通过查询 redis 中的值来为模块导出变量,但是我不知道如何异步执行此操作。

这是我试过的,其中getconfig()是一个返回从redis查询的变量的函数:

var exports = {};
module.exports = exports;

getconfig(function(config){
exports.ConnectionString = {
Server: config.db.server,
Login: config.db.userName,
Database: config.db.database,
Password: config.db.password,
Port: 1433,
Timeout:10000
};
exports.poolSize = 1000;
exports.poolIdleTimeout = 30000000;
exports.tdsServerPort = 88888;
console.log(exports);

})

但这行不通。如何返回这些导出变量?

我已经使用以下简化示例尝试了@Peter Lyons 的建议:

module.exports = {
ConnectionString: getDb,
poolSize: 1000,
poolIdleTimeout: 30000000,
tdsServerPort: 88888
}

function getDb(cb){
var dat = {
Server:'192.168.42.4',
Login: 'XXXX',
Database: 'MYDB',
Password: 'PASS',
Port: 1433,
Timeout:10000
};

cb(null,dat);

}

但是当它被调用时,它作为一个函数返回连接字符串并且不被评估:

{ ConnectionString: [Function: getDb],
poolSize: 1000,
poolIdleTimeout: 30000000,
tdsServerPort: 88888 }

最佳答案

模块用于代码和静态数据。函数、常量等。来自数据库的数据不属于模块导出。这是非常非常规的,有点不合逻辑。然而,传统且直接的是查询和数据库并使用结果调用回调的函数。

function getConnectionString(callback) {
getConfigFromRedis(function (error, config) {
if (error) {
callback(error)
return
}
var connectionString = {
Server: config.db.server,
......etc
}
callback(null, connectionString)
})
}

module.exports = {
getConnectionString: getConnectionString
}

关于node.js - NodeJS 从 redis 查询中导出变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20414494/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com