2015-08-13 25 views
-2

我不明白可能創建像Couchdb一樣的視圖。 當我在沒有視圖的couchdb中創建數據庫時,我可以在pouchdb中複製。 我可以使用數據在D3.js表中打印,但是當我在couchdb或pouchdb中創建視圖 時,數據似乎存在,但具有相同代碼的請求似乎遇到了麻煩。pouchdb,視圖創建似乎使正常的數據不可用

(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); 

使他們可以使用的數據,但在控制檯的JavaScript沒有錯誤。 是否有可能在同一時間有像couchdb數據和意見。 我新手在PouchDB 感謝

+0

目前還不清楚你在問什麼。請更具體地瞭解究竟需要什麼。 – Catch44

回答

1

我不太以下你的問題,但我看到了幾個潛在的問題:

1)你是不是叫db.destroy()後重新創建數據庫。當你destroy(),你需要再次打電話new PouchDB()再次使用它。

2)當你做allDocs()時,你使用的是{include_docs: true},但是當你使用query()時,你沒有做同樣的事情。如果您希望恢復文檔,則應該執行query('questions/id_question', {include_docs: true})

此外,一般來說,這些類型的問題可能比StackOverflow更適合#pouchdb IRC頻道或郵件列表。 (請參閱http://pouchdb.com/底部的「討論」鏈接)通常有人可以提供分步指導! :)

0

感謝您的回答。你發現我的劇本問題,現在它完美的作品。最重要的是查詢(提問/ id_question',{include_docs:真})

感謝

相關問題