使用nodejs-cloudant(nano)在Cloudant Local上进行未经授权的管理

时间:2017-08-21 01:01:13

标签: node.js couchdb local cloudant couchdb-nano

我一直在努力让当地的云端人员停留几个小时。我按照here

所述通过docker安装了

我可以使用默认信用卡访问localhost:8080上的信息中心。当我提供相同的信用时,我可以卷曲数据库,例如curl -X PUT $HOST/database -u admin:pass

问题是,当我连接nodejs-cloudant模块时,我总是得到401 - 未经授权的错误,特别是:

{ error: 'unauthorized', reason: 'one of _all_dbs, _admin, server_admin is required for this request', statusCode: 401 }

似乎问题是当cloudant本地连接时没有用户被返回。当我连接到基于云的cloudant实例时,会填充reply.userCtx,但在本地连接时,它是:userCtx: { name: null, roles: [] } }

实际登录似乎正常,因为我已经测试过不正确的信用卡。

这是我设置凭据的地方:



    const credentials = {
      account: (stage === 'local') ? 'admin' : db.credentials.username,
      password: (stage === 'local') ? 'pass' : db.credentials.password,
      plugin: 'promises',
    }
    if (stage === 'local') {
      credentials.url = 'http://localhost:8080'
    }
    this.cloudant = cloudant(credentials)




1 个答案:

答案 0 :(得分:1)

如果你提供这样的网址:

var url="http://admin:pass@localhost:8080";
this.cloudant = cloudant({ url: url, plugin: "promises"});

然后它运作正常。

问题是当您说account = 'admin'时,该库假定主机名为admin.cloudant.com。如果您提供完整的URL,那么它是明确的并且工作正常。

希望这有帮助。