Javascript 在数据库中,视图创建似乎使正常数据不可用

Javascript 在数据库中,视图创建似乎使正常数据不可用,javascript,d3.js,pouchdb,Javascript,D3.js,Pouchdb,我不理解创建像Couchdb这样的视图的可能性。 当我在couchdb中创建一个没有视图的db时,我可以在数据库中复制。 我可以使用D3.js在表中打印数据,但在创建视图时 在couchdb或PockDB中,数据似乎存在,但使用相同代码的请求似乎会遇到麻烦 (function(p_url, p_debug) { 'use strict'; var debug = p_debug; var url = p_url; var ENTER_KEY = 13; var synStart = docume

我不理解创建像Couchdb这样的视图的可能性。 当我在couchdb中创建一个没有视图的db时,我可以在数据库中复制。 我可以使用D3.js在表中打印数据,但在创建视图时 在couchdb或PockDB中,数据似乎存在,但使用相同代码的请求似乎会遇到麻烦

(function(p_url, p_debug) {
'use strict';
var debug = p_debug;
var url = p_url;
var ENTER_KEY = 13;
var synStart = document.getElementById('synchronize');
var printArray = document.getElementById('printArray');
var printGraph = document.getElementById('printGraph');
var destroydb = document.getElementById('delete');
var dbOptions = {
   auto_compaction : false,
   cache : false
};
var db = new PouchDB('dblocal',dbOptions);
var remoteCouch = url;

/* getRemoteDB sans filter */
function getRemoteDB(remote) {
    db.replicate.from(remoteCouch).on('complete', function() {
        console.log('complete');
    }.on('error', function() {
        console.log('error replicate');
    }));
}

/* getRemoteDB by filter */
function getlocalDB(filter) {

}

function reset() {
    db.destroy().then(function(response) {
        console.log('destroy success');
    }).catch(function(err) {
        console.log(err);
    });
}
// The table generation function
function tabulate(id, data, columns) {
    var table = d3.select(id).append("table")
            .attr("style", "margin-left: 20px; border: solid 1px black;"),
            thead = table.append("thead"),
            tbody = table.append("tbody");
    // append the header row
    thead.append("tr")
            .selectAll("th")
            .data(columns)
            .enter()
            .append("th")
            .text(function(column) {
                return column;
            });
    // create a row for each object in the data
    var rows = tbody.selectAll("tr")
            .data(data.etablissement)
            .enter()
            .append("tr");
    // create a cell in each row for each column
    var cells = rows.selectAll("td")
            .data(function(row) {
                return columns.map(function(column) {
                    return {column: column, value: row[column]};
                });
            })
            .enter()
            .append("td")
            .attr("style", "font-family: Courier; color : white;") // sets the font style
            .html(function(d) {
                return d.value;
            });
    return table;
}


function showDatas() {
    var tab = document.getElementById('db_array');
    tab.innerHTML = '';
    db.allDocs({include_docs: true, descending: true}).then(function(doc) {
        var jsonvalues = {etablissement: []};
        doc.rows.forEach(function(row) {
            jsonvalues.etablissement.push({'numerouai': row.doc.etablissement.numerouai, 'reponses': row.doc.reponses[0].idreponse});
        });
        var dataset = jsonvalues;
        tabulate('#db_array', dataset, ['numerouai', 'reponses']);
        d3.select("db_graph").selectAll("div.h-bar") // <-B
                .data(dataset.etablissement)
                .enter()
                .append("div")
                .attr("class", "h-bar")
                .append("span");
    }).catch(function(err) {
        console.log(err);
    });
}

function createViews() {
    var ddoc = {
        _id: '_design/questions',
        views: {
            id_question: {
                map: function(doc) {
                    emit(doc.etablissement.numerouai,doc.academie.codeaca);
                }.toString()
            }
        }
    };
    db.put(ddoc).then(function() {
        console.log('vue poussée');
    }).catch(function(err) {
        console.log(err);
    });
}

function getQuestions(i) {
    console.log('getQuestions');
    db.query('questions/id_question').then(function(res) {
        console.log('res');
        console.log(res.key);
    }).catch(function(err) {
        console.log(err);
    });

}
/* main function */
function sync() {
    console.log('synchronisation ...');
    synStart.addEventListener("click", getRemoteDB.bind(this, url));
    printArray.addEventListener("click", showDatas.bind(this));
    destroydb.addEventListener("click", reset.bind(this));
    printGraph.addEventListener("click", getQuestions.bind(this));
    createViews();
}
sync();
})('http://192.168.2.128:5984/eticdegre1', true);
(函数(p_url,p_debug){
"严格使用",;
var debug=p_debug;
var url=p_url;
var ENTER_KEY=13;
var synStart=document.getElementById('synchronize');
var printary=document.getElementById('printary');
var printGraph=document.getElementById('printGraph');
var destroydb=document.getElementById('delete');
变量dbOptions={
自动压缩:错误,
缓存:false
};
var db=新的数据库('dblocal',dbOptions);
var-remotecoach=url;
/*getRemoteDB SAN筛选器*/
函数getRemoteDB(远程){
db.replicate.from(remotecoach).on('complete',function()){
console.log('complete');
}.on('error',function()){
log('error replicate');
}));
}
/*通过筛选器获取RemoteDB*/
函数getlocalDB(过滤器){
}
函数重置(){
db.destroy().then(函数(响应){
console.log('destroy success');
}).catch(函数(err){
控制台日志(err);
});
}
//表生成函数
函数表格(id、数据、列){
var table=d3.选择(id).追加(“表格”)
.attr(“样式”,“左边距:20px;边框:实心1px黑色;”,
thead=table.append(“thead”),
tbody=table.append(“tbody”);
//追加标题行
附件(“tr”)
.selectAll(“th”)
.数据(列)
.输入()
.附加(“th”)
.text(函数(列){
返回列;
});
//为数据中的每个对象创建一行
变量行=tbody.selectAll(“tr”)
.data(data.etablisement)
.输入()
.附加(“tr”);
//在每行中为每列创建一个单元格
变量单元格=行。选择全部(“td”)
.数据(功能(行){
返回columns.map(函数(列){
返回{column:column,value:row[column]};
});
})
.输入()
.附加(“td”)
.attr(“样式”,“字体系列:Courier;颜色:白色;”//设置字体样式
.html(函数(d){
返回d值;
});
返回表;
}
函数showDatas(){
var tab=document.getElementById('db_数组');
tab.innerHTML='';
allDocs({include_docs:true,descending:true}){
var jsonvalues={etablisement:[]};
单据行forEach(函数行){
jsonvalues.etablishement.push({'numerouai':row.doc.etablishement.numerouai,'reponses':row.doc.reponses[0].idreponse});
});
var数据集=jsonvalues;
制表('db#u数组',数据集,['numerouai','reponses']);

d3.选择(“db_图”)。选择全部(“div.h-bar”)/我不太明白你的问题,但我发现了几个潜在问题:

1) 调用
db.destroy()
后,您不会重新创建数据库。当您调用
destroy()
时,需要再次调用
new.db()
以再次使用它

2) 当您执行
allDocs()
时,您使用的是
{include_docs:true}
,但是当您执行
query()
时,您没有执行相同的操作。如果您希望收回文档,您应该执行
query('questions/id_question',{include_docs:true})


一般来说,对于#pockDB IRC频道或邮件列表来说,这类问题可能比StackOverflow更好。(请参阅本部分底部的“讨论”链接)通常会有人提供一步一步的指导!:)

谢谢你的回答。你发现我的脚本有问题,现在它工作得很好。最重要的是查询('questions/id\u question',{include\u docs:true})


谢谢

不清楚您的要求。请更具体地说明具体需要什么。