其中一个定义为Schema
,以便应用程序了解如何将数据从MongoDB映射到JavaScript对象.Schema
是申请的一部分.它与数据库有关.它只将数据库映射到JavaScript对象.所以是的——如果你想有一个好的映射,你需要在需要它的应用程序中运行这段代码.它也适用于getter/setter/validations等.
但是请注意,这样做:
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
,否则将引发异常).
然而,所有这些都只在一个 node 会话中起作用,因此如果你正在运行另一个需要访问Schema
的 node 应用程序,那么你需要调用注册码.因此,最好在单独的文件中定义所有模式,例如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();
将初始化给定 node 会话的所有模式.