私はマングースで始めたばかりです。サンプルデータを使用してスキーマとdbを作成するmongooseを使用した作成スクリプトがあります。
次に、実際のアプリケーションを作成します。アプリケーションを実行するたびにスキーマオブジェクトを作成する必要がありますか、それとも既に何らかの形で利用可能ですか?
つまり、mongooseを使用してdbにアクセスするすべてのアプリで、または初めて初めてこのコードを実行する必要がありますか。
var Comments = new Schema({
title : String
, body : String
, date : Date
});
セッター/検証/などがある場合、答えはどのように変わりますか?
Schema
を定義するので、アプリケーションはMongoDBからJavaScriptオブジェクトにデータをマップする方法を理解します。 Schema
はアプリケーションの一部です。データベースに関係するnothingがあります。データベースをJavaScriptオブジェクトにマップするだけです。はい-ニースマッピングが必要な場合は、このコードをeveryが必要なアプリケーションで実行する必要があります。また、ゲッター/セッター/検証/などにも適用されます。
ただし、これを行うことに注意してください。
_var mongoose = require('mongoose');
var Schema = mongoose.Schema; // <-- EDIT: missing in the original post
var Comments = new Schema({
title : String
, body : String
, date : Date
});
mongoose.model("Comments", Comments);
_
Schema
をグローバルに登録します。これは、実行中のアプリケーションが外部モジュールを使用している場合、このモジュールでは単に使用できることを意味します
_var mongoose = require('mongoose');
var Comments = mongoose.model("Comments");
Comments.find(function(err, comments) {
// some code here
});
_
(このコードを使用する前に、実際にSchema
を登録する必要があることに注意してください。そうしないと、例外がスローされます)。
ただし、これらはすべて1つのノードセッション内でのみ機能するため、Schema
へのアクセスが必要な別のノードアプリを実行している場合は、登録コードを呼び出す必要があります。したがって、すべてのスキーマを個別のファイルで定義することをお勧めします。たとえば、_comments.js
_は次のようになります。
_var mongoose = require('mongoose');
var Schema = mongoose.Schema; // <-- EDIT: missing in the original post
module.exports = function() {
var Comments = new Schema({
title : String
, body : String
, date : Date
});
mongoose.model("Comments", Comments);
};
_
次に、このようなファイル_models.js
_を作成します
_var models = ['comments.js', 'someothermodel.js', ...];
exports.initialize = function() {
var l = models.length;
for (var i = 0; i < l; i++) {
require(models[i])();
}
};
_
require('models.js').initialize();
を呼び出すと、指定されたノードセッションのすべてのスキーマが初期化されます。
アプリを実行するたびにこの初期化コードを実行して、アプリのスキーマをmongooseに登録する必要があります。
アプリが終了すると、mongooseはスキーマを保存しません。そのため、次にスキーマを使用するアプリを実行するときには、スキーマを再度登録する必要があります。
ただし、そうするようにアプリを設定するのはかなり簡単です。
以下は、mongooseでスキーマを初期化する方法を示すコードへの2つのリンクです。 1つ目はJavaScriptで、2つ目はCoffeeScriptです。
https://github.com/fbeshears/register_models
https://github.com/fbeshears/register_coffee_models
JavaScriptデモは1つのアプリにすぎません。
CoffeeScriptコードには2つの個別のアプリがあります。最初はMongoDBでドキュメントを保存し、2番目は最初のアプリで保存されたドキュメントを検索して表示します。