Schema
1 つは、MongoDB から JavaScript オブジェクトにデータをマップする方法をアプリケーションが理解できるように定義します。Schema
アプリケーションの一部です。データベースとは関係ありません。データベースを JavaScript オブジェクトにマップするだけです。そうです - 適切なマッピングが必要な場合は、このコードを必要とするすべてのアプリケーションでこのコードを実行する必要があります。ゲッター/セッター/検証などにも適用されます。
ただし、これを行うことに注意してください。
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();
と、特定のノード セッションのすべてのスキーマが初期化されます。