node.js - 将参数传递给要求(加载模块时)

标签 node.js express

使用 require 加载模块时是否可以传递参数?

我有提供登录功能的模块 login.js。它需要一个数据库连接,我希望在我的所有模块中使用相同的数据库连接。现在我导出一个函数 login.setDatabase(...) 让我指定一个数据库连接,它工作得很好。但我宁愿在加载模块时传递数据库和任何其他要求。

var db = ...
var login = require("./login.js")(db);

我是 NodeJS 的新手,通常使用 Java 和 Spring 框架进行开发,所以是的...这是一个构造函数注入(inject) :) 是否可以执行类似于我上面提供的代码的操作?

最佳答案

根据您在 this answer 中的评论,我会做你想做的事情:

module.exports = function (app, db) {
    var module = {};

    module.auth = function (req, res) {
        // This will be available 'outside'.
        // Authy stuff that can be used outside...
    };

    // Other stuff...
    module.pickle = function(cucumber, herbs, vinegar) {
        // This will be available 'outside'.
        // Pickling stuff...
    };

    function jarThemPickles(pickle, jar) {
        // This will be NOT available 'outside'.
        // Pickling stuff...

        return pickleJar;
    };

    return module;
};

我几乎所有的模块都是这样构建的。似乎对我很有效。

关于node.js - 将参数传递给要求(加载模块时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13151693/

相关文章:

node.js - 使用多个 LocalStrategy PassportJs/ExpressJs 进行序列化/反序列化

node.js - 如何更新 sails mongodb 中的特定字段

javascript - '[WDS] Disconnected!' 错误对 webpack 和 Vue.js 意味着什么?

node.js - Nodejs + Express : Cors is not a function

node.js - 查找引用对象id等于user._id的数据

node.js - 更新时sequelize的返回值是多少?

javascript - 将socket.io封装在一个类中

javascript - 如何在node.js + Express中获取调用者ip?

javascript - Handlebars 和 Javascript

node.js - Mongoose:每天创建多少用户