pouchdb,视图创建似乎使正常数据不可用
pouchdb, the view creation seems making normal data unavailable
我不明白创建像 Couchdb 这样的视图的可能性。
当我在没有视图的 couchdb 中创建数据库时,我可以在 pouchdb 中进行复制。
我可以使用数据在 table 和 D3.js 中打印,但是当我创建视图时
在 couchdb 或 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 的新手
谢谢
我不太理解你的问题,但我发现了几个潜在的问题:
1) 您没有在调用 db.destroy()
后重新创建数据库。当你destroy()
时,需要再次调用new PouchDB()
才能再次使用
2) 当你做 allDocs()
时,你正在使用 {include_docs: true}
,但当你做 query()
时,你并没有做同样的事情。如果你希望取回文档,你应该做 query('questions/id_question', {include_docs: true})
.
一般来说,这类问题对于 #pouchdb IRC 频道或邮件列表来说可能比 Whosebug 更好。 (请参阅 http://pouchdb.com/ 底部的 "Discuss" 链接)通常会有人提供逐步指导! :)
感谢您的回答。您发现了我的脚本问题,现在它运行良好。最重要的是 query('questions/id_question', {include_docs: true})
谢谢
我不明白创建像 Couchdb 这样的视图的可能性。 当我在没有视图的 couchdb 中创建数据库时,我可以在 pouchdb 中进行复制。 我可以使用数据在 table 和 D3.js 中打印,但是当我创建视图时 在 couchdb 或 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 的新手 谢谢
我不太理解你的问题,但我发现了几个潜在的问题:
1) 您没有在调用 db.destroy()
后重新创建数据库。当你destroy()
时,需要再次调用new PouchDB()
才能再次使用
2) 当你做 allDocs()
时,你正在使用 {include_docs: true}
,但当你做 query()
时,你并没有做同样的事情。如果你希望取回文档,你应该做 query('questions/id_question', {include_docs: true})
.
一般来说,这类问题对于 #pouchdb IRC 频道或邮件列表来说可能比 Whosebug 更好。 (请参阅 http://pouchdb.com/ 底部的 "Discuss" 链接)通常会有人提供逐步指导! :)
感谢您的回答。您发现了我的脚本问题,现在它运行良好。最重要的是 query('questions/id_question', {include_docs: true})
谢谢