0

私は現在、パッケージが追加される「コア」アプリケーションで利用可能なMeteorコレクションにデータを挿入したいMeteorパッケージを開発しています。

私がやりたいことの 1 つは、スタートアップ時にいくつかのデータをコレクションに挿入することです。

# Inside the package (the Books-Collection is a collection form the core-App)
Meteor.startup ->
  Books.insert title: 'foo', author: 'bar'

パッケージが最初に読み込まれるため、これは機能しません。したがって、コア システムからの Books-Collection は使用できません。後で呼び出すことができる関数にカプセル化すると、期待どおりに機能します。

# 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 に入力することもできますが、この機能をパッケージ内にカプセル化して、ユーザーがパッケージを追加するたびにブックが自動的に挿入されるようにしたいと考えています。

前もって感謝します!

4

1 に答える 1

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'

上記のすべてがサーバー上で最適に機能します。

于 2015-05-27T10:59:01.447 に答える