3

問題:開発者が Mongoose スキーマを「登録」できるようにする Web サービスを作成しています。開発者はブラウザで JSON スキーマを作成し、それをサーバーに AJAX で送信します。

したがって、送信されたスキーマを使用して新しい 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);
}

これで、カスタム スキーマを使用してモデルが作成されました。

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

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

4

2 に答える 2

3
  1. Mongo では固定スキーマのコレクションを作成できません。これは明らかに機能です
  2. 新しいスキーマを使用する前に Mongoose に登録していれば、コレクションが存在するかどうかにかかわらず、問題なく動作するはずです。
  3. いずれにせよ、Mongoose スキーマは強制されるだけです。ネイティブ ドライバーにドロップダウンすることで、何かを盗むことができます。これは非常に簡単です。Whatever.collection.insert
  4. サーバーを起動するたびにスキーマを再登録する必要があります
于 2011-12-26T18:43:02.537 に答える
0

私はあなたのようなアプリケーションの開発にも取り組んでいます。このアプリケーションでは、ユーザーがスキーマを作成でき、それが Mongoose に自動的に読み込まれます。スキーマを使用する前にSongooseにスキーマがロードされているかどうかを確認し、ロードされていない場合(アプリケーションの再起動後など)にロードする関数を作成しました。

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

于 2012-01-20T01:20:17.743 に答える