2016-06-11 65 views
0

使用猫鼬Node.js的我犯了一个基地实体是子分类到用户实体和实体建造在客户端继承,并且都到家庭实体的引用,我的问题是使用微风MetadataHelper我如何定义,一个家庭可以拥有navigationProperties数组,它可以是一个用户实体。总之,我失去了面向对象,那么是否有一种方法可以在客户端使用Breeze构造多态支持继承,这正是我所想到的。使用微风元帮手如何通过手

var addFamilyItemType =(): any => { 
      var entityType = { 
       name: this.entityNames.Family, 
       dataProperties: { 
        id: {type: DT.MongoObjectId}, 
        name: {type: DT.String, required: true, max: 50} 
       }, 

       navigationProperties: { 
       //this is where i want one navigation since they are a subclass 
       // members: {type: [], hasMany: true} 
        users: {type: [this.entityNames.User], hasMany: true}, 
        people: {type: [this.entityNames.Person], hasMany: true} 
       } 
      }; 

      helper.addTypeToStore(store, entityType); 
      return entityType; 
     }; 

    var addUserItemType =(): any => { 
      var entityType = { 
       name: this.entityNames.User, 
       dataProperties: { 
        id: {type: DT.MongoObjectId}, 
        email: {type: DT.String, required: true, max: 50}, 
        username: {type: DT.String, required: true, max: 20}, 
        password: {type: DT.String, 'default': ''} 
       }, 
       navigationProperties: { 
        family: { 
         entityTypeName: this.entityNames.Family, 
         associationName: 'User_Family', 
         foreignKeyNames: ['familyId'] 
        } 
       } 
      }; 

      helper.addTypeToStore(store, entityType); 
      return entityType; 
     }; 

var addPersonItemType =(): any => { 
      var entityType = { 
       name: this.entityNames.Person, 
       dataProperties: { 
        id: {type: DT.MongoObjectId}, 
        email: {type: DT.String, max: 50}, 
        profileImageURL: {type: DT.String,'default':''}      
       }, 
       navigationProperties: { 
        family: { 
         entityTypeName: this.entityNames.Family, 
         associationName: 'Person_Family', 
         foreignKeyNames: ['familyId'] 
        } 
       } 
      }; 

      helper.addTypeToStore(store, entityType); 
      return entityType; 
     }; 

回答

0

我找到了解决办法是添加一个名为成员对FamilyModel对象调用registerEntityTypeCtor时将返回两个数组用户和其他人的工会吸气财产,我想微风继承支持开箱即用的。

var metadataStore = this.metadata.createMetadataStore(); 
var registerType = metadataStore.registerEntityTypeCtor.bind(metadataStore); 

registerType(this.metadata.entityNames.Family, FamilyModel);