无法在PouchDB中显示预先填充的数据库

时间:2014-12-19 23:37:46

标签: pouchdb

我刚开始学习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('*');
});

2 个答案:

答案 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>