我正在使用猫鼬并有两个模式,user
和album
UserSchema = new mongoose.Schema
name:
type: String
required: true
albums: [
type: mongoose.Schema.Types.ObjectId
ref: 'Album'
]
, collection : 'gallery'
UserModel = mongoose.model 'User', UserSchema
AlbumSchema = new mongoose.Schema
name:
type: String
required: true
unique: true
owner:
type: mongoose.Schema.Types.ObjectId
ref: 'User'
# ....
, collection : 'gallery'
AlbumModel = mongoose.model 'Album', AlbumSchema
当然,AlbumModel还有其他一些属性,例如created_time
或modified_time
,当然还有images
。
每个用户都是一个或多个相册的所有者。出于性能原因,我想在用户模型上存储所有相册的引用(这是dbref
?)。除了ObjectId之外,我想存储专辑名称,这是id旁边最常用的属性。结果看起来应该像(例如json):
{
"name": "John Doe",
"albums": [
{
"id": "1234567890",
"name": "Sample album"
},
{
"id": "9876543210",
"name": "Sample album 2"
}
]
}
使用猫鼬可以吗?用户模型中的专辑名称是否已更改(如果已更改)(
)答案 0 :(得分:1)
出于性能原因,我想在用户模型上存储所有相册的引用(这是一个dbref吗?
是的,DbRef只是文档中的属性,是不同文档的ObjectId。
这是否可以使用猫鼬?
是的,您可以像这样定义此架构:
UserSchema = new mongoose.Schema
name:
type: String
required: true
albums: [{
id: {
type: mongoose.Schema.Types.ObjectId
ref: 'Album' },
name: String
]
用户模型中的专辑名称是否会自动更新(如果已更改)(很少发生)?
不,但您可以在Album架构上使用mongoose postSave挂钩来保持此非规范化数据的同步。