2016-01-20 4 views
3

В настоящее время я работаю над приложением в Метеор, где я читаю «Данные из коллекции» от MongoDB, в которой я, конечно, поместил данные и сохранил эти данные в табличной таблице. Но проблема в том, что после первого запуска приложения Data не обновляется в таблице, обновляется только заголовок таблицы, а не записи. Это мой код, который у меня есть.Метеор Добавить новые данные в существующую коллекцию

//common.js 
 
//code shared between client and server 
 

 
Books = new Mongo.Collection("user"); 
 

 
TabularTables = {}; 
 

 
Meteor.isClient && Template.registerHelper('TabularTables', TabularTables); 
 

 
TabularTables.Books = new Tabular.Table({ 
 
    name: "wahltable", 
 
    collection: Books, 
 
    columns: [ 
 
    {data: "vname", title: "Vorname"}, 
 
    {data: "nname", title: "Nachname"}, 
 
    {data: "standort", title: "Standort"}, 
 
\t {data: "stimmen", title: "Stimmen"}, 
 
\t {data: "anmerkung", title: "Anmerkung"} 
 

 
    ] 
 
}); 
 

 

 
//app.js from the server 
 
Meteor.startup(function() { 
 
    if (Books.find().count() === 0) { 
 
    var books = [ 
 
     {vname: "Anna", nname: "Muster" ,standort: "Das Modul", stimmen:"4", anmerkung:"nichts"}, 
 
     {vname: "Peter", nname: "Meier" ,standort: "BMHS", stimmen:"45", anmerkung:"nichts"}, 
 
     {vname: "Max", nname: "Muster" ,standort: "BMHS", stimmen:"66", anmerkung:"nichts"}, 
 
     {vname: "Moritz", nname: "Kaiser" ,standort: "BMHS", stimmen:"90", anmerkung:"nichts"}, 
 
     {vname: "Niklas", nname: "König" ,standort: "BMHS", stimmen:"123", anmerkung:"nichts"}, 
 
     {vname: "Victoria", nname: "Berger" ,standort: "TGM", stimmen:"90", anmerkung:"nichts"}, 
 
\t {vname: "Hans", nname: "Berger" ,standort: "TGM", stimmen:"90", anmerkung:"nichts"}, 
 
\t {vname: "Sepp", nname: "Hund" ,standort: "TGM", stimmen:"30", anmerkung:"nichts"}, 
 
\t {vname: "Franz", nname: "Kross" ,standort: "TGM", stimmen:"940", anmerkung:"nichts"}, 
 
\t {vname: "Miriam", nname: "Mayer" ,standort: "TGM", stimmen:"20", anmerkung:"nichts"}, 
 
\t {vname: "Sandra", nname: "Meier" ,standort: "TGM", stimmen:"12", anmerkung:"nichts"}, 
 
     ]; 
 
    _.each(books, function (book) { 
 
     Books.insert(book); 
 
    }); 
 
    } 
 
});


CMD Snip

Это как моя CMD выглядит в то время как Метеор работает приложение, я предполагаю, что ошибка autopublish имеет смысл, но я не знаю, как использовать этот Информация.

ответ

1

Попробуйте использовать команды записи Bulk API, которые позволяют для выполнения массовых операций вставки, которые просто абстракции в верхней части сервера и они позволяют легко создавать объемные операции. Эти массовые операции поступают в основном в двух вариантах:

  • Упорядоченные объемные операции - Эти операции выполнять все операции в порядке и ошибок на первой ошибки записи.
  • Операции с неупорядоченной массой операций - Эти операции выполняют все параллельные операции и суммируют все ошибки. Неупорядоченные массовые операции не гарантируют порядок исполнения.

Чтобы использовать массив api, вам необходимо получить необработанный доступ к объектам коллекции и базы данных в драйвере npm MongoDB с помощью методов rawCollection и rawDatabase на Mongo.Collection.

Следующая демонстрирует этот подход:

Books = new Meteor.Collection('books'); 

if (Meteor.isServer) { 
    Meteor.startup(function() { 
     if (Books.find({}).count() === 0) { 
      var bulkOp = Books.rawCollection().initializeUnorderedBulkOp(), 
       counter = 0, 
       books = [...]; // the books data array, shortened for brevity 

      _.each(books, function (book) { 

       bulkOp.insert(book); 

       counter++; 
       if (counter % 1000 == 0) { 
        // Execute per 1000 operations and re-initialize every 1000 update statements 
        bulkOp.execute(function(e, rresult) { 
         // do something with result 
        }); 
        bulkOp = Books.rawCollection().initializeUnorderedBulkOp(); 
       } 
      }); 

      // Clean up queues 
      if (counter % 1000 != 0){ 
       bulkOp.execute(function(e, result) { 
        // do something with result 
       }); 
      } 

     } 

    }); 
} 
+0

Эй, спасибо за быстрый ответ, я написал код, как вы мне сказали выше, но это не кажется, чтобы помочь. Кажется, он автоматически загружает записи в базу данных и помещает их в столбцы при запуске. Есть ли что-то вроде метода updateOnStartup() или refresh(), который я мог бы использовать для такого рода проблем? – dkocsi

Смежные вопросы