Javascript meteor将新数据添加到现有集合
我目前正在Meteor中开发一个应用程序,从MongoDB的一个集合中读取数据,当然,我在其中输入数据,并将这些数据保存到一个表格中。 但问题是,第一次启动应用程序后,表中的数据不会刷新,只有表头会刷新,条目不会刷新。 这是我目前拥有的代码Javascript meteor将新数据添加到现有集合,javascript,html,mongodb,meteor,tabular,Javascript,Html,Mongodb,Meteor,Tabular,我目前正在Meteor中开发一个应用程序,从MongoDB的一个集合中读取数据,当然,我在其中输入数据,并将这些数据保存到一个表格中。 但问题是,第一次启动应用程序后,表中的数据不会刷新,只有表头会刷新,条目不会刷新。 这是我目前拥有的代码 //common.js //客户端和服务器之间共享的代码 图书=新的Mongo.收藏(“用户”); 表格表={}; Meteor.isClient&&Template.registerHelper('tabletables',tabletables); t
//common.js
//客户端和服务器之间共享的代码
图书=新的Mongo.收藏(“用户”);
表格表={};
Meteor.isClient&&Template.registerHelper('tabletables',tabletables);
tabletables.Books=新的Tabular.Table({
名称:“沃尔表”,
收藏:书籍,
栏目:[
{数据:“vname”,标题:“Vorname”},
{数据:“nname”,标题:“Nachname”},
{数据:“标准”,标题:“标准”},
{数据:“史提曼”,标题:“史提曼”},
{数据:“安默孔”,标题:“安默孔”}
]
});
//来自服务器的app.js
Meteor.startup(函数(){
if(Books.find().count()==0){
var账簿=[
{V名称:“安娜”,nname:“集合”,standort:“模块”,stimmen:“4”,anmerkung:“nichts”},
{名称:“彼得”,名称:“梅尔”,标准:“BMH”,标准:“45”,安默尔贡:“尼克”},
{vname:“Max”,nname:“Muster”,standort:“BMHS”,stimmen:“66”,anmerkung:“nichts”},
{名称:“莫里茨”,名称:“凯撒”,标准:“BMH”,标准:“90”,安默尔贡:“尼希茨”},
{vname:“Niklas”,nname:“König”,standort:“BMHS”,stimmen:“123”,anmerkung:“nichts”},
{名称:“维多利亚”,名称:“伯杰”,标准:“TGM”,标准:“90”,anmerkung:“nichts”},
{名称:“汉斯”,名称:“伯杰”,标准:“TGM”,标准:“90”,anmerkung:“nichts”},
{名称:“Sepp”,名称:“Hund”,标准:“TGM”,标准:“30”,anmerkung:“nichts”},
{名称:“弗兰兹”,名称:“克罗斯”,标准:“TGM”,标准:“940”,安默尔贡:“尼希茨”},
{V名称:“米里亚姆”,nname:“迈耶”,标准:“TGM”,标准:“20”,anmerkung:“nichts”},
{名称:“桑德拉”,名称:“梅尔”,标准:“TGM”,标准:“12”,anmerkung:“nichts”},
];
_.每本书{
书籍。插入(书籍);
});
}
});代码>尝试使用write命令,该命令允许执行大容量插入操作,而大容量插入操作只是服务器顶部的抽象,可以轻松构建大容量操作。这些批量操作主要有两种口味:
- 有序大容量操作-这些操作按顺序执行所有操作,并在第一次写入错误时出错
- 无序批量操作-这些操作并行执行所有操作并汇总所有错误。无序的批量操作不能保证执行顺序
要使用批量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
});
}
}
});
}
嘿,谢谢你的快速回答,我像你上面告诉我的那样写了我的代码,但似乎没有帮助。它似乎会自动加载数据库条目,并在启动时将它们放入列中。是否有类似updateOnStartup()或refresh()的方法可以用于解决此类问题?