Mongoose-如何引用embedded文档元素?
我有users.js模式与embedded式文档数组宠物。 对于每个用户,一个用户可以有多个宠物(通常不会超过3个,我会认为)。
每只宠物都会有一个日常图表。 所以这是一个宠物的日常图表。 我已经阅读embedded式文件,每个数组元素被索引。 在daily.js中,如何引用它将属于populate()函数的宠物?
var mongoose = require('mongoose'); var Schema = mongoose.Schema; var userSchema = new Schema({ firstName: { type: String, required: true }, lastName: { type: String, required: true }, username: { type: String, required: true, unique: true }, location: String, pets: [{ name: 'string', animalType: 'string'}], //could have more than one pet created_at: Date, updated_at: Date });
var mongoose = require('mongoose'); var Schema = mongoose.Schema; var dailySchema = new Schema({ tite: String, _pet: { type: Number, ref: 'User.pet' }, // not sure how to reference name in user.pets[#] array created_at: Date, updated_at: Date });
引用
对不起,令人失望,但这是一个反模式。 填充不能从另一个集合的subdocs填充 – 你得到这个错误的原因是没有模板。
所以参考embedded式文档可能不太好。 将pet
与User
分开作为一个模式可能会更好
var PetSchema = new Schema ({ name: 'string', animalType: 'string' });
和UserSchema
和DailySchema
将
var userSchema = new Schema({ ... pets: [{ type: Schema.Types.ObjectId, ref: 'Pet' }], //could have more than one pet }); var dailySchema = new Schema({ _pet: { type: Number, ref: 'Pet' }, // not sure how to reference name in user.pets[#] array });