我在我的快速应用程序中使用ACL模块。在服务器启动时,我使用acl.allow()函数定义了一些角色及其权限。
但它记录了一个错误,说明了未定义的拒绝类型。错误param给出回调时错误消失。但我不确定是什么引发错误以及应该如何处理错误。
我使用的代码段是:
var aclmodule = new acl(new acl.mongodbBackend(config.db.URL, "accesscontrol_"));
aclmodule.allow([
{
roles:['rolea'],
allows:[
{resources:['a','b'], permissions:['*']}
]
},
{
roles:['roleb','rolec'],
allows:[
{resources:['a'], permissions:['view']}
]
},
{
roles:['rolec'],
allows:[
{resources:['o'], permissions:['view','edit']}
]
}
]);
});
控制台中记录的错误是:
未处理拒绝TypeError:undefined不是函数 在D:\ user \ web \ myapp-web \ node_modules \ acl \ lib \ mongodb-backend.js:119:15
at D:\myapp\web\myapp-web\node_modules\acl\node_modules\async\lib\async.
JS:607:21 在D:\ myapp \ web \ myapp-web \ node_modules \ acl \ node_modules \ async \ lib \ async。 JS:246:17 在iterate(D:\ myapp \ web \ myapp-web \ node_modules \ acl \ node_modules \ async \ l IB \ async.js:146:13) at async.eachSeries(D:\ myapp \ web \ myapp-web \ node_modules \ acl \ node_module 小号\异步\ lib中\ async.js:162:9) 在_asyncMap(D:\ myapp \ web \ myapp-web \ node_modules \ acl \ node_modules \ async) \ lib中\ async.js:245:13) 在Object.mapSeries(D:\ myapp \ web \ myapp-web \ node_modules \ acl \ node_module) 小号\异步\ lib中\ async.js:228:23) 在Object.async.series(D:\ myapp \ web \ myapp-web \ node_modules \ acl \ node_mod) ULES \异步\ lib中\ async.js:605:19) 在Object.MongoDBBackend.end(D:\ myapp \ web \ myapp-web \ node_modules \ acl \ li b \ mongodb的-backend.js:35:11) 在Object.tryCatcher(D:\ myapp \ web \ myapp-web \ node_modules \ acl \ node_modul) ES \蓝鸟\ JS \主\ util.js中:26:23) 在Object.ret [as endAsync](eval at(D:\ myapp \ web \ myapp-web) \ node_modules \ ACL \ node_modules \蓝鸟\ JS \主\ promisify.js:163:12),
答案 0 :(得分:4)
config.db.URL
是一个字符串吗?如果是这样,这是导致错误的原因。它失败的那一行是(在mongodb-backend.js
中):
self.db.collection(...
- 它说.collection()
未定义。 (如果“self.db”只是一个字符串,那将是有意义的。)
Node-acl在为says in the docs创建新的mongodbBackend
时需要数据库实例,类似于example:
mongoose.connection.on('connected', function() {
var myAcl = new acl(new acl.mongodbBackend(mongoose.connection.db));
});