2014-10-12 15 views
5

Tôi đăng câu hỏi này và câu trả lời với hy vọng nó sẽ giúp người khác (hoặc nếu có câu trả lời tốt hơn).Mongoose subchema mảng ảo

Làm cách nào để tạo ảo cho Mongoose lồng nhau lược đồ khi ở dạng mảng?

Dưới đây là các lược đồ:

var Variation = new Schema({ 
    label: { 
    type: String 
    } 
}); 

var Product = new Schema({ 
    title: { 
    type: String 
    } 

    variations: { 
    type: [Variation] 
    } 
}); 

Làm thế nào tôi muốn có một ảo trên variations. Dường như nếu tài liệu phụ không phải là mảng thì chúng tôi chỉ có thể thực hiện việc này:

Product.virtual('variations.name')... 

Nhưng điều đó chỉ hoạt động đối với mảng không.

Trả lời

4

Điều quan trọng là xác định ảo như một phần của phụ trợ thay vì cấp độ gốc và phải được thực hiện trước chỉ số phụ được gán cho cấp độ gốc. Bạn có thể truy cập đối tượng gốc qua this.parent():

var Variation = new Schema({ 
    label: { 
    type: String 
    } 
}); 

// Virtual must be defined before the subschema is assigned to parent schema 
Variation.virtual("name").get(function() { 

    // Parent is accessible 
    var parent = this.parent(); 
    return parent.title + ' ' + this.label; 
}); 


var Product = new Schema({ 
    title: { 
    type: String 
    } 

    variations: { 
    type: [Variation] 
    } 
}); 
Các vấn đề liên quan