如何在 BreezeJS 元数据中定义 Matrix/Link/Cross Table 连接?
How to define Matrix/Link/Cross Table joins in BreezeJS Metadata?
我正在尝试 breeze 使用手动生成的元数据,但我似乎无法通过矩阵 tables 找到涵盖导航属性的文档。
数据模型是:
Organization
PK:OrganizationID
User
PK:UserID
加入他们的table是:
User_Organization
PK:UserOrganizationID
FK:OrganizationID
FK:UserID
当我检索组织时,我希望它有一个 属性 "users",其中包含一组用户 object。
如何定义它并在 Breeze 元数据中指定矩阵 table,因为用户没有 organizationID?
** 更新
我的主要问题是我正在将 Breeze 链接到 Sequelize,因此如果可能的话,我需要能够通过元数据来管理这一切。 @Jeremy-Danyow 下面的第一个答案解决了客户端代码的问题,但我正在寻找一种方法将最终的 object 图作为元数据的一部分呈现给 breeze。
我认为这个问题可能与 Many-to-many relations in Breeze. There is useful information in the answer 以及对答案的评论重复。
也就是说,我想针对你的这部分问题提出一个解决方法:
When I retrieve an Organization I want it to have a property "users" which contains an array of User objects.
如果您要配置元数据 supported way,您可以像这样向您的组织实体添加只读 "users" 属性:
function Organization() { }
Organization.prototype.users = function () {
return this.userOrganizations().map(function(userOrganization) { return userOrganization.user() });
};
store.registerEntityTypeCtor('Organization', Organization);
这使用 "Add methods to the constructor" 记录的方法 here。
编辑
听起来像 breeze-sequelize 支持正在开发中,很快就会发布。参见 here and here。如果你能等得起一点点,你就会有更少的摩擦。
我正在尝试 breeze 使用手动生成的元数据,但我似乎无法通过矩阵 tables 找到涵盖导航属性的文档。
数据模型是:
Organization
PK:OrganizationID
User
PK:UserID
加入他们的table是:
User_Organization
PK:UserOrganizationID
FK:OrganizationID
FK:UserID
当我检索组织时,我希望它有一个 属性 "users",其中包含一组用户 object。
如何定义它并在 Breeze 元数据中指定矩阵 table,因为用户没有 organizationID?
** 更新
我的主要问题是我正在将 Breeze 链接到 Sequelize,因此如果可能的话,我需要能够通过元数据来管理这一切。 @Jeremy-Danyow 下面的第一个答案解决了客户端代码的问题,但我正在寻找一种方法将最终的 object 图作为元数据的一部分呈现给 breeze。
我认为这个问题可能与 Many-to-many relations in Breeze. There is useful information in the answer 以及对答案的评论重复。
也就是说,我想针对你的这部分问题提出一个解决方法:
When I retrieve an Organization I want it to have a property "users" which contains an array of User objects.
如果您要配置元数据 supported way,您可以像这样向您的组织实体添加只读 "users" 属性:
function Organization() { }
Organization.prototype.users = function () {
return this.userOrganizations().map(function(userOrganization) { return userOrganization.user() });
};
store.registerEntityTypeCtor('Organization', Organization);
这使用 "Add methods to the constructor" 记录的方法 here。
编辑
听起来像 breeze-sequelize 支持正在开发中,很快就会发布。参见 here and here。如果你能等得起一点点,你就会有更少的摩擦。