gpt4 book ai didi

javascript - 如何在express.js应用程序中注册异步中间件模块?

转载 作者:行者123 更新时间:2023-12-03 11:08:27 26 4
gpt4 key购买 nike

我正在开发一个使用 node_acl 的 Express 应用程序带有 MongoDB 后端的模块。我制作了一个模块,用于创建 node_acl 实例并异步配置它。该中间件应作为堆栈上的第二个中间件调用,以控制请求访问。

// myModule.js

exports.init = function(callback) {
mongodb.connect("mongodb://localhost:27017/mydb", function(error, db) {
var mongoBackend = new acl.mongodbBackend(db, 'acl_');
acl = new acl(mongoBackend);
// Defining roles for acl

....

acl.addRoleParents('..', '..', function(err){
if (err) callback(err, acl);
acl.addRoleParents('..', '..', function(err){
if (err) callback(err, acl);
acl.addRoleParents('..', ['..','..'], function(err){
if (err) {
callback(err, acl);
} else {
callback(null, acl);
};
});
});
});
});
};

如何将此模块注册为堆栈的第二个中间件?我需要以某种方式编辑 myModule.js 吗?

谢谢大家

最佳答案

该模块已经 provides an Express middleware ,所以它很简单:

// ...
var myModule = require('./myModule');

myModule.init(function(err, acl) {
if (err) throw err;

// insert first `app.use()` here

app.use(acl.middleware());

// insert other middleware/route handlers here
});

尽管我应该注意您现有代码的一些事项:

  • if (err)callback(err, acl); 应更改为 if (err)returncallback(err); 以防止在之后进一步执行调用回调。

  • if (error) return callback(error);mongodb.connect() 回调中缺失,以防出现连接错误。

关于javascript - 如何在express.js应用程序中注册异步中间件模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27719918/

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