Node-ACl抛出未处理的拒绝错误

时间:2015-08-12 13:59:20

标签: javascript node.js express promise acl

我在我的快速应用程序中使用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),   

1 个答案:

答案 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));
});