0

Meteorjs でアプリを作成しています。次のように初期化されるコレクションがあります。

Places=new Mongo.Collection('places');

対応する場所の画像も保存したい。プロジェクトに collectionFS パッケージを追加しました。次のコードは、画像の個別のコレクションを作成します。

image=new FS.Collection("images", {
    stores: [new FS.Store.FileSystem("images")]
});

ただし、この一連の画像を「場所」の関連ドキュメントに関連付ける方法がわかりません。または、mongo コレクションに画像を挿入するだけです。

4

1 に答える 1

1

これは、2 つのコレクションを関連付ける Meteor/Mongo でよくあるケースです。mongo docsには、これに関する良い記事があります。

それぞれの場所に多くの画像があるとしましょう。画像内の場所への参照を配置するか、場所から多くの画像を参照することができます。

_idcollectionFS でイメージを作成する場合 (詳細は省略します)、イメージの を必ず保持してください。

imgId = image.insert();

画像にその場所を参照させたい場合は、次のように画像を更新できます。

image.update({ _id: imgId },{ $set: { placeId: myPlace._id }});

または$push imgId、場所内の画像の配列にできます:

Places.update({ _id: myPlace._id },{ $push: { imageArray: imgId }});

2 番目の形式の参照は、同じイメージを複数の場所 (多対多) に属することができるという点で、もう少し柔軟です。これはネストされた場所に適しています。たとえば、タイムズ スクエアの写真は、タイムズ スクエアの写真とニューヨーク市の写真の両方であるなどです。

どちらの方法でも、関連するコレクションを簡単に公開できるように設計されたreywood:publish-compositeパッケージを使用して、コレクションに参加できます。imagePlaces

また、Meteor でコレクションに名前を付ける一般的な規則は、最初の文字を大文字にし、複数形にすることにも注意してください。つまり、 imageの代わりにImages。これは、コレクションが Meteor のグローバル変数であり、コレクションが名前の由来となったものの多くを保持しているためです。

于 2015-11-15T22:38:24.357 に答える