2017-08-21 21 views
0

我一直在試圖讓雲端本地進行幾個小時。我已經通過碼頭安裝如上所述here未經授權的管理員在Cloudant本地使用nodejs-cloudant(nano)

我可以訪問儀表板localhost:8080與默認creds。當我提供相同的信用信號時,我可以蜷縮數據庫,例如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

如果提供的URL是這樣的:

var url="http://admin:[email protected]:8080"; 
this.cloudant = cloudant({ url: url, plugin: "promises"}); 

然後正常工作。

問題是,當你說account = 'admin'時,庫假定主機名爲admin.cloudant.com。如果你提供完整的URL,那麼它是明確的,並且完美地工作。

希望這會有所幫助。

+0

感謝堆,運作良好!這意味着我不必在多餘的帳戶和密碼字段中正確傳遞? – theSiberman

相關問題