Hãy xem mongoose cho nút. Nó cho phép bạn xác định các mô hình cho một ứng dụng nhanh. Bạn có thể sử dụng .populate() để tham gia hiệu quả vào những gì sẽ là một khóa ngoại trên một hệ thống RDBMS.
http://mongoosejs.com/docs/populate.html
var mongoose = require('mongoose')
, Schema = mongoose.Schema
var PersonSchema = new Schema({
name : String,
age : Number,
stories : [{ type: Schema.Types.ObjectId, ref: 'Story' }]
});
var StorySchema = new Schema({
_creator : { type: Schema.Types.ObjectId, ref: 'Person' },
title : String,
fans : [{ type: Schema.Types.ObjectId, ref: 'Person' }]
});
var Story = mongoose.model('Story', StorySchema);
var Person = mongoose.model('Person', PersonSchema);
refs Saving
refs tiết kiệm các tài liệu khác hoạt động theo cách tương tự như bạn thường tiết kiệm objectids, chỉ cần gán một ObjectId:
var aaron = new Person({ name: 'Aaron', age: 100 });
aaron.save(function (err) {
if (err) return handleError(err);
var story1 = new Story({
title: "Once upon a timex.",
_creator: aaron._id // assign an ObjectId
});
story1.save(function (err) {
if (err) return handleError(err);
// thats it!
});
})
Dân
Vì vậy, đến nay chúng tôi đã không làm bất cứ điều gì đặc biệt. Chúng tôi vừa tạo một Người và một Câu chuyện. Bây giờ, hãy xem xét cách điền vào _creator của câu chuyện của chúng tôi:
Story
.findOne({ title: /timex/ })
.populate('_creator')
.exec(function (err, story) {
if (err) return handleError(err);
console.log('The creator is %s', story._creator.name); // prints "The creator is Aaron"
})