2013-04-03 211 views
-1

我已經做了CouchDB的設計文件,它完美的作品在以下網址 http://localhost:5984/db/_design/app/index.html 現在的問題是我試圖抓取網頁內容,並從節點JS但只有HTML頁面顯示出來顯示鏈接的CSS和JS文件不工作,當我試圖縮小問題的範圍時,我發現CSS和JS文件都假設有couchdb的登錄憑據,並沒有鏈接我甚至嘗試添加auth頭在響應參數,但仍沒有運氣的NodeJS couchapp沒有鏈接CSS文件

var http = require('http'); 

var json; 
var root = new Buffer("admin:pass").toString('base64'); 
http.createServer(function(req, res) { 
res.setHeader('Authorization', root); 
res.writeHead(200, { 'Content-Type':'text/html' }); 
couchPage(); 
res.end(json); 
}).listen(8080); 

function couchPage() { 
var options = { 
    hostname: 'localhost', 
    port: 5984, 
    path: '/db/_design/app/index.html', 
    auth: 'admin:pass', 
    method: 'GET' 
}; 

var req = http.request(options, function(res) { 
    res.setEncoding('utf8'); 
    res.on('data', function (chunk) { 
     json = chunk; 
    }); 
}); 

req.end(); 
} 

可以在任何一個請指導我在哪裏,我錯了

回答

0

我認爲這與couchdb授權無關。問題是你不能在你的nodejs服務器上執行任何路由。也就是說,瀏覽器向localhost:8080發出請求並接收/db/_design/app/index.html的內容作爲答案。現在,瀏覽器檢測到一個樣式表的鏈接,比如說「style.css」。它對localhost:8080/style.css執行一個請求,但是你的nodejs服務器只是忽略請求的「style.css」部分。相反,客戶端將再次收到/db/_design/app/index.html的內容!

如果您想通過nodejs爲您的設計文檔提供附件,則必須先解析請求,然後從couchdb中檢索相應的文檔。但是,我不認爲你真的想這樣做。要麼使用傳統方式在nodejs後面使用couchdb(不能直接從客戶端訪問),然後將其作爲存儲在磁盤上的html(或模板)文件的數據庫使用。或者你想直接將couchdb暴露給客戶端,並讓nodejs通過couchdb _changes feed監聽事件。