MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

tạo giản đồ mongoose

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.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bộ giải mã MongoDB BSON không được sử dụng khi mã hóa đối tượng

  2. MongoDB giới hạn kích thước lưu trữ?

  3. Từ chối lời hứa chưa được xử lý:Lỗi:URL không đúng định dạng, không thể phân tích cú pháp

  4. Node mongoose tìm truy vấn trong vòng lặp không hoạt động

  5. MongoDB E11000 lỗi khóa trùng lặp