我目前正在开发一个Meteor软件包,我希望将一些数据插入到Meteor集合中,该集合可以在" core" -Application中添加软件包。
我想做的一件事是将一些数据插入到Startup上的一个集合中:
# Inside the package (the Books-Collection is a collection form the core-App)
Meteor.startup ->
Books.insert title: 'foo', author: 'bar'
这不起作用,因为首先加载包。因此,核心系统的书籍收藏不可用。如果我将它封装到一个我可以稍后调用的函数中,它会按预期工作。
# inside the package (the Books-Collection is a collection form the core-App)
sampleFunction = ->
Books.insert title: 'foo', author: 'bar'
# call function e.g. after 10 seconds
sampleFunction()
我可以在core-Application中输入对函数的调用,但是我想在包中封装这个功能,所以每次用户添加包时都会自动插入一本书。
提前谢谢!
答案 0 :(得分:0)
第一个问题可能是因为您的收藏集是在Meteor.startup
中定义的。如果您自己定义它,它应该按照您的预期工作:
Books = new (Mongo.Collection)('books')
而不是:
Meteor.startup ->
Books = new (Mongo.Collection)('books')
其次,当您以可以访问应用程序集合信息的方式添加软件包时,无法运行代码。
您可以做的最好的是每次运行应用程序时运行代码(例如在添加软件包后第一次运行应用程序):
您可以检查该图书是否已添加,如果没有添加:
Meteor.startup ->
Books.upsert { title: 'foo' },
title: 'foo'
author: 'bar'
以上所有内容在服务器上效果最佳。