我想检索一个完整的对象,它由多个相同类型的混合器组成。例如,建筑物mall是office、cantine和store的混合体。所有这些都储存在收藏大楼里。
我有以下方案,其中属性mixins是其他建筑物的数组:
BuildingSchema = mongoose.Schema
_id: String
mixins: [String]
title: String
attr1: []
attr2: []
attr3: []
Building = mongoose.Model "Building", BuildingSchema是否有可能(使用某种静态/实例方法或使用预/后挂钩)检索并用自己的数据扩展/覆盖混合对象来组成最终的构建实例?
发布于 2015-02-25 18:51:03
最后,我在retrieve模型上创建了一个名为Building的静态方法,如下所示:
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来启用混合器。deepExtend函数帮助完成最终的对象组合。最后返回一个新实例。
https://stackoverflow.com/questions/28434077
复制相似问题