我对nodejs相当新。写我的第一个申请。我已经习惯了php。
为了保持代码的整洁和清洁,我总是在单独的文件中编写函数,并在php中根据需要包含它们。
然而,在nodejs中,我必须要求它们,就像我需要一个模块一样。 例如。
functions.js
module.exports = {
check_db : function(key){
},
check_cache : function(key){
memcached.get(key,function(err, data){
console.log(data);
});
},
};
包含在主应用程序中,如此
// Establish connection with cache and database
const mysql = require('mysql2');
const Memcached = require('memcached');
const memcached = new Memcached('localhost:11211');
const bb = require('bot-brother');
//Load the database cache functions
const dbc = require("./functions");
dbc.check_cache(123);
现在我可以从主应用程序文件访问dbc中的函数,但我不能使用函数文件中主应用程序中所需的模块。 我收到一个没有定义memcached的错误。
我怎样才能解决这个问题?
答案 0 :(得分:0)
简单的解决方案,您可以在require("memcached")
文件中functions.js
并在此处创建服务器。但我不会选择这个解决方案,因为如果你需要其他地方的memcache,你就可以在memcache服务器上打开很多连接。
IMO的另一个更清洁的解决方案是将memcache依赖注入您的服务(或functions
,因为您调用它们)。 (这种做法被称为依赖注入,如果你想了解它并有什么好处)
以下是它的工作方式:
functions.js
中导出原始json对象,而是导出一个带参数的函数(此处为memcache
)以下是代码的样子:
main.js
//Load the database cache functions
const dbcFactory = require("./functions");
const dbc = dbcFactory(memcached)
functions.js
module.exports = function (memcached) {
return {
check_db : function(key){},
check_cache : function(key){
memcached.get(key,function(err, data){
console.log(data);
})
}
};