Một định nghĩa Schema
để ứng dụng hiểu cách ánh xạ dữ liệu từ MongoDB thành các đối tượng JavaScript. Schema
là một phần của ứng dụng. Nó không có không có gì để làm với cơ sở dữ liệu. Nó chỉ ánh xạ cơ sở dữ liệu thành các đối tượng JavaScript. Vì vậy, có - nếu bạn muốn có ánh xạ đẹp, bạn cần chạy mã này trong mọi ứng dụng cần nó. Nó cũng áp dụng cho getters / setters / validations / etc.
Tuy nhiên, lưu ý rằng làm điều này:
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);
sẽ đăng ký Schema
toàn cầu. Điều này có nghĩa là nếu ứng dụng bạn đang chạy đang sử dụng một số mô-đun bên ngoài, thì trong mô-đun này, bạn có thể chỉ cần sử dụng
var mongoose = require('mongoose');
var Comments = mongoose.model("Comments");
Comments.find(function(err, comments) {
// some code here
});
(lưu ý rằng bạn thực sự cần đăng ký Schema
trước khi sử dụng mã này, nếu không sẽ có một ngoại lệ).
Tuy nhiên, tất cả những điều này chỉ hoạt động bên trong một phiên nút, vì vậy nếu bạn đang chạy một ứng dụng nút khác cần quyền truy cập vào Schema
, sau đó bạn cần gọi mã đăng ký. Vì vậy, bạn nên xác định tất cả các Lược đồ trong các tệp riêng biệt, ví dụ:comments.js
có thể trông như thế này
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);
};
sau đó tạo tệp models.js
có thể trông giống như thế này
var models = ['comments.js', 'someothermodel.js', ...];
exports.initialize = function() {
var l = models.length;
for (var i = 0; i < l; i++) {
require(models[i])();
}
};
Hiện đang gọi require('models.js').initialize();
sẽ khởi tạo tất cả các Lược đồ của bạn cho một phiên nút nhất định.