我刚开始学习PouchDB。经过几次文档浏览并回顾了很多例子,我根据自己的需要调整了app.js,这只是为了预先填充数据库并显示所有记录(是的,我知道这不是正确的PouchDB术语) - 对不起)。此时,屏幕保持空白,Chrome Dev Tools控制台中不显示任何输出。
你能告诉我代码失败了吗?
app.js:
(function() {
'use strict';
// Create new DB
var tl = document.getElementById('todo-list');
var db = new PouchDB('todos');
return console.log("Created DB");
// Insert data into DB (post docs with auto-IDs)
db.bulkDocs([
{
title: 'Dog',
name: 'German Shepherd'
},
{
title: 'Dog',
name: 'Don\'s Rotweiler'
},
{
title: 'Cat',
name: 'Carrie\'s Siamese'
},
{
title: 'Cat',
name: 'Persian'
}
], function(err, response) {
if (!err) {
return console.log('Rows: ' + response.total_rows);
}
if (err) {
return console.error(err);
}
});
// Redraw screen on change
db.changes({
since: 'now',
live: true
}).on('change', showTodos);
function showTodos(){
db.allDocs({include_docs: true}, function(err, response){
if(!err) {
tl.innerHTML = "";
todo.rows.forEach(function(todo){
tl.innerHTML += '<hr><p>' + todo.title + '<br>' + todo.name + '</p>';
return console.log(response);
});
} if(err) {
return console.error(err);
}
});
}
PouchDB.debug.enable('*');
});
答案 0 :(得分:0)
我认为你的意思是response.rows
,而不是todo.rows
。此外,每个待办事项都有一个doc
,所以在其中,您需要例如todo.doc.title
,而非todo.title
。
答案 1 :(得分:0)
这有效:
<script type="text/javascript">
/*
Purpose: to populate dynamically
*/
PouchDB.destroy('kittens').then(function() {
return new PouchDB('kittens');
}).then(function(db) {
db.bulkDocs([{
_id: 'mittens',
occupation: 'kitten',
cuteness: 9.0
}, {
_id: 'katie',
occupation: 'kitten',
cuteness: 8.0
}, {
_id: 'felix',
occupation: 'kitten',
cuteness: 7.0
}, {
_id: 'abby',
occupation: 'kitten',
cuteness: 6.0
}
// line 45: must give id of db docs + 1
]).then(function() {
return db.allDocs({
include_docs: true
});
}).then(function(result) {
var out = '';
var i = 0;
result.rows.forEach(function() {
while (i < 5) {
out = JSON.stringify(result.rows[i].doc) + '<br>';
document.getElementById('display').innerHTML += out;
i++;
}
});
}).catch(function(err) {
console.log(err);
});
});
</script>
</head>
<body>
<pre id="display"></pre>
</body>