javascript - meteor 向现有集合添加新数据

标签 javascript html mongodb meteor tabular

我目前正在 Meteor 中开发一个应用程序,我从 MongoDB 的集合中读取数据,我当然会在其中放入数据,并将这些数据保存到表格中。 但问题是,在应用程序第一次启动后,表中的数据不会刷新,只会刷新表头,不会刷新条目。 这是我目前拥有的代码。

//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"},
	{data: "stimmen", title: "Stimmen"},
	{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"},
	  {vname: "Hans", nname: "Berger" ,standort: "TGM", stimmen:"90", anmerkung:"nichts"},
	  {vname: "Sepp", nname: "Hund" ,standort: "TGM", stimmen:"30", anmerkung:"nichts"},
	  {vname: "Franz", nname: "Kross" ,standort: "TGM", stimmen:"940", anmerkung:"nichts"},
	  {vname: "Miriam", nname: "Mayer" ,standort: "TGM", stimmen:"20", anmerkung:"nichts"},
	  {vname: "Sandra", nname: "Meier" ,standort: "TGM", stimmen:"12", anmerkung:"nichts"},
      ];
    _.each(books, function (book) {
      Books.insert(book);
    });
  }
});


CMD Snip

这是 Meteor 运行应用程序时我的 cmd 的样子,我想自动发布错误是有意义的,但我不知道如何使用此信息。

最佳答案

尝试使用写入命令 Bulk API 允许执行批量插入操作,这些操作只是服务器顶部的抽象,它们使构建批量操作变得容易。这些批量操作主要有两种形式:

  • 有序批量操作 - 这些操作按顺序执行所有操作,并在第一次写入错误时出错。
  • 无序批量操作 - 这些操作并行执行所有操作并汇总所有错误。无序批量操作不保证执行顺序。

要使用批量 api,您需要通过 Mongo.Collection 上的 rawCollection 和 rawDatabase 方法获得对 npm MongoDB 驱动程序中的集合和数据库对象的原始访问权限。

下面演示了这种方法:

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
                });
            }

        }

    });
}

关于javascript - meteor 向现有集合添加新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34897141/

相关文章:

php - 邮件发送成功后在public函数上添加css样式

node.js - mongoose 5.7.0 中的自定义验证

mongodb - 如何关闭mongodb中的副本集?

javascript - 在 Javascript 中,每个函数都可以被视为一个类的构造函数吗?

javascript - 侧边栏 "category"选择并显示 PHP 功能

Javascript 帮助 - Nim 游戏

php 数组到 javascript 对象

javascript - 在 div 内渲染 Handlebars 脚本

php - 如果值存在于 mysql 表中,则选中复选框

node.js - Mongoose :在 find() 之后填充