Seseorang mendefinisikan Schema
sehingga aplikasi memahami cara memetakan data dari MongoDB ke objek JavaScript. Schema
merupakan bagian dari aplikasi. Itu tidak ada hubungannya dengan basis data. Itu hanya memetakan database ke objek JavaScript. Jadi ya - jika Anda ingin memiliki pemetaan yang bagus, Anda perlu menjalankan kode ini di setiap aplikasi yang membutuhkannya. Ini juga berlaku untuk getter/setter/validations/etc.
Namun perhatikan bahwa melakukan ini:
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);
akan mendaftarkan Schema
secara global Artinya jika aplikasi yang Anda jalankan menggunakan beberapa modul eksterior, maka dalam modul ini Anda cukup menggunakan
var mongoose = require('mongoose');
var Comments = mongoose.model("Comments");
Comments.find(function(err, comments) {
// some code here
});
(perhatikan bahwa Anda benar-benar perlu mendaftarkan Schema
sebelum menggunakan kode ini, jika tidak pengecualian akan dilempar).
Namun semua ini hanya berfungsi di dalam satu sesi simpul, jadi jika Anda menjalankan aplikasi simpul lain yang memerlukan akses ke Schema
, maka Anda perlu memanggil kode registrasi. Jadi ada baiknya untuk mendefinisikan semua Skema dalam file terpisah, misalnya comments.js
mungkin terlihat seperti ini
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);
};
lalu buat file models.js
yang mungkin terlihat seperti ini
var models = ['comments.js', 'someothermodel.js', ...];
exports.initialize = function() {
var l = models.length;
for (var i = 0; i < l; i++) {
require(models[i])();
}
};
Sekarang memanggil require('models.js').initialize();
akan menginisialisasi semua Skema Anda untuk sesi simpul tertentu.