2011-12-26 20 views
3

問題:開発者がMongooseスキーマを「登録」できるようにしていますこれは私のサーバーにAJAXされます。将来の使用のためにMongooseスキーマ/モデル(ドキュメントではありません)を保存しています

投稿されたスキーマを使用して新しいMongooseモデルを作成しますが、サーバーを再起動してもこのスキーマが存在する必要があります。

私のようなものがないコードがあります。

/* schemaObj is what you create a schema with, 
    for example { name: String, id: Number } */ 

registerSchema = function(model_name, schemaObj) { 
    desiredSchema = new Schema(schemaObj); 
    desiredCollection = 'collection_' + model_name; 
    mongoose.model(desiredCollection, desiredSchema, desiredCollection); 
} 

[OK]を、ので、これはカスタムスキーマを私たちのためのモデルを作成しました。

このコードを実行してモデルを作成してからサーバーを再起動すると、新しいコレクション/モデルは存在しません。つまり、ドキュメントが保存されたときだけコレクションが作成されるためです。私は(私は何も持っていないので)今すぐ文書を保存したくない、単にコレクションを作成する。

質問:この「固定」スキーマを使用してコレクションを作成する方法はありますか?そのため、将来挿入されるドキュメントは厳密にスキーマに準拠する必要がありますか?私は基本的にはcreate tableのようなものをSQLで探しています。

答えて

3
  1. Mongoで固定スキーマのコレクションを作成することはできません。これは明示的にfeatureです。
  2. Mongooseを使用する前に新しいスキーマを登録している限り、コレクションが存在するかどうかにかかわらず、正常に動作します。
  3. Mongooseスキーマは、とにかく強制的に実行されるだけですが、ネイティブドライバにドロップすることで、やっかいなことをやりとりすることができます。これは本当に簡単です。 Whatever.collection.insert
  4. あなたは私も自動的にロードされ、ユーザーが自分のスキーマを作成することができますあなたのようなアプリケーション、に取り組んでいます再登録あなたのスキーマには、サーバー
+0

** 4 **は私が確認したかったものです。ありがとうございます。だから私は自分自身のデータベースに登録されたスキーマを格納する必要があります、私は文字列化されたスキーマ+コレクション名の別のコレクションを持っている必要がありますね。新しいスタートでそれらをロードし直してください。 –

+0

はい、正確です!スキーマが動的でない場合でも、これを行う必要があります。ベスト! –

0

を起動するたびに必要マングース。私はスキーマが使用する前にSongooseにロードされているかどうかをチェックする関数を作成し、ロードされていない場合(たとえば、アプリケーションの再起動後)、ロードします。

まだドキュメントはありませんが、このjslModel.jsファイルに私の実装があります。 function loadMongooseModelを検索してください。

関連する問題