TypeError: acl.middleware() is not a function
TypeError: acl.middleware() is not a function
我正在尝试在我的 Node.js 应用程序中使用 ACL。
使用acl模块,我有以下代码:
var express = require('express'),
logger = require('morgan'),
mongoose = require('mongoose'),
Acl = require('acl');
var app = express();
app.set('port', 8000);
mongoose.connect('mongodb://localhost:27017/test', function () {
console.log('Mongodb connection connected');
var acl = new Acl(new Acl.mongodbBackend(mongoose.connection.db, 'acl_'), logger());
acl.allow([
{
roles: ['guest'],
allows: [
{ resources: '/test', permissions: 'get' }
],
}
]);
console.log('acl.middleware is a ', typeof acl.middleware);
app.get('/test', acl.middlemare(), function (req, res) {
});
app.get('/unauthorized', acl.middlemare(), function (req, res) {
});
});
app.listen(app.get('port'), function () {
console.log('Express server listening on port %d', app.get('port'));
});
当我启动服务器时,我得到以下输出:
Express server listening on port 8000
Mongodb connection connected
acl.middleware is a function
TypeError: acl.middleware() is not a function
...
编辑: 放置记录器后,我给定了:Error: Broke parameter contract
我不知道我做错了什么。
我已经看过这个相关的 ,但仍然没有成功。
我还有什么遗漏的吗?
它是 acl.middleware()
而不是 acl.middlemare()
(w vs. m)。
您必须使用 Promise 来延迟 ACL 的实例化,直到 Express 完全初始化。
isMongoDBConnected = new Promise((resolve, reject) => {
MongoClient.connect(mongoDBUrl, (e, db) => {
if (e) {
reject(e);
} else {
var mongoBackend = new NodeAcl.mongodbBackend(db /*, {String} prefix */);
acl = new NodeAcl(mongoBackend, logger);
defineRoles(acl);
resolve(true);
}
});
});
我正在尝试在我的 Node.js 应用程序中使用 ACL。
使用acl模块,我有以下代码:
var express = require('express'),
logger = require('morgan'),
mongoose = require('mongoose'),
Acl = require('acl');
var app = express();
app.set('port', 8000);
mongoose.connect('mongodb://localhost:27017/test', function () {
console.log('Mongodb connection connected');
var acl = new Acl(new Acl.mongodbBackend(mongoose.connection.db, 'acl_'), logger());
acl.allow([
{
roles: ['guest'],
allows: [
{ resources: '/test', permissions: 'get' }
],
}
]);
console.log('acl.middleware is a ', typeof acl.middleware);
app.get('/test', acl.middlemare(), function (req, res) {
});
app.get('/unauthorized', acl.middlemare(), function (req, res) {
});
});
app.listen(app.get('port'), function () {
console.log('Express server listening on port %d', app.get('port'));
});
当我启动服务器时,我得到以下输出:
Express server listening on port 8000
Mongodb connection connected
acl.middleware is a function
TypeError: acl.middleware() is not a function
...
编辑: 放置记录器后,我给定了:Error: Broke parameter contract
我不知道我做错了什么。
我已经看过这个相关的
我还有什么遗漏的吗?
它是 acl.middleware()
而不是 acl.middlemare()
(w vs. m)。
您必须使用 Promise 来延迟 ACL 的实例化,直到 Express 完全初始化。
isMongoDBConnected = new Promise((resolve, reject) => {
MongoClient.connect(mongoDBUrl, (e, db) => {
if (e) {
reject(e);
} else {
var mongoBackend = new NodeAcl.mongodbBackend(db /*, {String} prefix */);
acl = new NodeAcl(mongoBackend, logger);
defineRoles(acl);
resolve(true);
}
});
});