Evet, ancak bir kaç seçeneğiniz vardır.
1. Seçenek: alt belge
Gerçekten alt belgeleri kullanmak istiyorsanız olarak C, ayrı bir model oluşturmak gerekmez. Referansınızı 'c' dizisine değiştirmeniz gerekiyor.
var C = new Schema({...});
var B = new Schema({c: [C]});
var A = new Schema({c: { type: ObjectId, ref: 'ModelB.c' });
var Model_A = mongoose.model('ModelA', A);
var Model_B = mongoose.model('ModelB', B);
Seçenek 2: Model
olarak C (Ben sadece bir alternatif olarak öne - Bir alt belge yanı sıra ayrı bir Model olarak 'C' oluşturmak beri örnek gereksiz görünüyor beri)
Alternatif olarak, ayrı koleksiyonlara sahip olmak anlamlı olabilir, her biri için bir mongoose modeli oluşturabilirsiniz. doğrudan her modeli başvurmak isteyebilirsiniz Bu durumda
var Model_A = mongoose.model('ModelA', A);
var Model_B = mongoose.model('ModelB', B);
var Model_C = mongoose.model('ModelC', C);
: Her bir ayrı toplama olacak
var C = new Schema({...});
var B = new Schema({c: { type: ObjectId, ref: 'ModelC' }});
var A = new Schema({c: { type: ObjectId, ref: 'ModelC' });
Noktası
olası Evet ama C'yi bir model veya alt belge olarak seçmek isterseniz almanız gerekir.
İlk çözüm benim için çalışmıyor. Benim durumumda B ve C aynı olsa da ('Kullanıcı 'arkadaşlarda arkadaşlıkların bir listesi vardır ve her arkadaşlığın diğer yöne-karşı tarafı için bir referansı vardır). Bunu anladım: 'MissingSchemaError: Schema" User.friends "modeline kayıtlı değil. – sol
Aynı zamanda @ S0lll0s ile aynı sorunla karşılaşıyorum. Seçenek 1 çalışmıyor gibi görünüyor. – ramdog
@ramdog Hala bir alt belge-öz referansı doldurmama izin veren bir çözüm bulamadım, sadece "boş" bir ObjectId kullanıyorum ve kendi başıma arama yapıyorum. Bir şey bulursanız haber verin ama çözüm bulunmadığına inanıyorum (henüz). – sol