如何在 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。如果你能等得起一点点,你就会有更少的摩擦。