我現在不能測試,但,看着來源,你可以注意到兩兩件事:
那麼我認爲你需要在URL配置選項與認證參數設置爲一個新值:
nano.config.url = 'http://' + params.user.name + ':' + params.user.password + '@localhost:5984';
或者,你可以保持配置對象爲couch.example.js,做一些事情,如:
cfg.user = params.user.name;
cfg.pass = params.user.password;
nano.config.url = cfg.url;
UPDATE:這裏有一個完整的例子:
var cfg = {
host: "localhost",
port: "5984",
ssl: false
};
cfg.credentials = function credentials() {
if (cfg.user && cfg.pass) {
return cfg.user + ":" + cfg.pass + "@";
}
else { return ""; }
};
cfg.url = function() {
return "http" + (cfg.ssl ? "s" : "") + "://" + cfg.credentials() + cfg.host +
":" + cfg.port;
};
var nano = require('nano')(cfg.url()),
db = nano.use('DB_WITH_AUTH'),
docId = 'DOCUMENT_ID';
function setUserPass(user, pass) {
cfg.user = user;
cfg.pass = pass;
nano.config.url = cfg.url();
}
db.get(docId, function (e, r, h) {
if (e) {
if (e['status-code'] === 401) {
console.log("Trying again with authentication...");
setUserPass('USENAME', 'PASSWORD');
db.get(docId, function (e, r, h) {
if (e) {
console.log("Sorry, it did not work:");
return console.error(e);
}
console.log("It worked:");
console.log(r);
console.log(h);
});
return;
}
console.log("Hmmm, something went wrong:");
return console.error(e);
}
console.log("No auth required:");
console.log(r);
console.log(h);
});
不幸的是,也從url生成的路徑。我嘗試了幾種可能性,並最終將身份驗證標頭。 – Patrick
@Patrick我不確定要理解你的意思,所以我添加了一個工作示例來解釋我的意思。我希望這有助於澄清。 –
非常感謝,我一開始就試過。但是,我發現了一些http認證來源,這比重寫整個cfg代碼更容易。我請求拉入節點庫,所以我希望很快會有更新。 – Patrick