Mongoose 用猫鼬做调味品

Mongoose 用猫鼬做调味品,mongoose,Mongoose,我想检索一个由多个相同类型的mixin组成的完整对象。例如,一座建筑商场是办公室、餐厅和商店的混合体。所有这些都储存在收集大楼中 我有以下方案,其中一个属性mixins是其他建筑的数组: BuildingSchema = mongoose.Schema _id: String mixins: [String] title: String attr1: [] attr2: [] attr3: [] Building = mongoos

我想检索一个由多个相同类型的mixin组成的完整对象。例如,一座建筑
商场
办公室
餐厅
商店
的混合体。所有这些都储存在收集大楼中

我有以下方案,其中一个属性
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
函数有助于最终的对象合成。最后返回一个新实例