我制作了一个couchdb设计文档,该文档在以下网址上完美运行
http://localhost:5984/db/_design/app/index.html
现在的问题是我试图获取页面内容并从节点js显示它,但只显示html页面链接的CSS和js文件不工作,当我试图缩小问题时,我发现css和js假设文件具有couchdb的登录凭据并且没有链接我甚至尝试在响应参数中添加auth头但仍然没有运气
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 :(得分: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监听事件。