Mongoose 用猫鼬做调味品
我想检索一个由多个相同类型的mixin组成的完整对象。例如,一座建筑Mongoose 用猫鼬做调味品,mongoose,Mongoose,我想检索一个由多个相同类型的mixin组成的完整对象。例如,一座建筑商场是办公室、餐厅和商店的混合体。所有这些都储存在收集大楼中 我有以下方案,其中一个属性mixins是其他建筑的数组: BuildingSchema = mongoose.Schema _id: String mixins: [String] title: String attr1: [] attr2: [] attr3: [] Building = mongoos
商场
是办公室
、餐厅
和商店
的混合体。所有这些都储存在收集大楼中
我有以下方案,其中一个属性mixins
是其他建筑的数组:
BuildingSchema = mongoose.Schema
_id: String
mixins: [String]
title: String
attr1: []
attr2: []
attr3: []
Building = mongoose.Model "Building", BuildingSchema
是否有可能(使用某种静态/实例方法或使用前/后钩子)检索并使用自己的数据扩展/覆盖mixin对象以组成最终的建筑实例?我最终在
建筑
模型上创建了一个名为检索
的静态方法,如下所示:
BuildingSchema.static "retrieve", (id, cb) ->
@
.findOne _id: id
.exec (error, building) =>
return cb error if error
building = building.toJSON()
mixins = building.mixins or []
async.reduce mixins, building, ((obj, id, cb) =>
@retrieve id, (error, building) ->
return cb error if error
building = building.toJSON()
building = deepExtend building, obj
cb null, building
), (error, building) ->
return cb error if error
cb null, new Building building
这里,我基本上是递归调用函数retrieve
,以启用mixin的mixin。deepExtend
函数有助于最终的对象合成。最后返回一个新实例