var Schema = mongoose.Schema;
var PeopleSchema = new Schema({
peopleType:{
type: Schema.Types.ObjectId,
ref: ['A', 'B'] /*or 'A, B'*/
}
})
6
A
cevap
0
ben hala görmüyorum Gelincik mevcut sürümünde İstediğiniz gibi sözdizimi ile çoklu ref mümkün. Ancak, here numaralı belgede açıklanan "Veritabanlarında Doldurma" yönteminin bir bölümünü kullanabilirsiniz. Mongoose Dynamic References
var Schema = mongoose.Schema;
var PeopleSchema = new Schema({
externalModelType:{
type: String
},
peopleType:{
type: Schema.Types.ObjectId,
refPath: 'externalModelType'
}
})
Şimdi - İçinde harici model adını modelinize dize alan eklemek ve saklamak gerekir
var PeopleSchema = new Schema({
peopleType:{
//Just ObjectId here, without ref
type: mongoose.Schema.Types.ObjectId, required: true,
},
modelNameOfThePeopleType:{
type: mongoose.Schema.Types.String, required: true
}
})
//And after that
var People = mongoose.model('People', PeopleSchema);
People.findById(_id)
.then(function(person) {
return person.populate({ path: 'peopleType',
model: person.modelNameOfThePeopleType });
})
.then(populatedPerson) {
//Here peopleType populated
}
...
4
ve refPath özelliği: Biz sadece açıkça nüfus yönteminin varyant nüfus mantığı taşımak gerekir Mongoose, ilgili modelden nesne ile peopleType'ı dolduracaktır.
Bu, Mongoose'un belirli bir dokümana hangi modeli referans göstereceğini nasıl bildiğinden anlam ifade etmiyor mu? Ne yapmaya çalıştığın hakkında biraz daha bilgi verebilir misin? – JohnnyHK
Teşekkürler.OK, örneğin, iki çeşit mal var, AGoods modeli ve BGoods modeli.Ve ben de onları kurtarmak için bir Mal modeli var (sadece ref kaydedin) .Bir iyi bulduğumda, ben arayacağım Mal modeli ve daha sonra bulursanız, gerçek iyi bilgileri AGoods veya BGoods'dan alacaktır. –
Bunu yapmanın bir yolunu buldunuz mu? – timhc22