2014-12-19 4 views
0

Я только начал изучать PouchDB. После нескольких проверок документов и рассмотрения многих примеров я адаптировал app.js к моим потребностям, а именно для предварительного заполнения БД и отображения всех записей (да, я знаю, что это не правильный PouchDB lingo - извините). На этом этапе экран остается пустым, и в консоли Chrome Dev Tools не отображается вывод.Проблемы с отображением предварительно заполненной базы данных в PouchDB

Можете ли вы сказать мне, в какой момент код не работает?

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

Это работает:

<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> 
0

Я думаю, что вы имеете в виду response.rows, не todo.rows. Также каждый todo имеет doc, поэтому внутри этого вам понадобится, например. todo.doc.title, а не todo.title.

+0

Нет, до сих пор не создание и отображение БД с этими изменениями. Ошибок в консоли тоже нет. – Steve