- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在努力寻找解决方案。
我想要拥有可以属于多个组织的用户。每个用户可以在特定组织中拥有不同的角色(我更喜欢偶数角色,但听起来更复杂......)。
在像User_Organization_Role
这样的表中,我需要有role
(roleId?)、isActive
等字段。也许还有更多。
我正在使用 Feathers Plus 生成器,但我认为在这种情况下这并不重要,但是向 schema
文件中添加一些内容可能会有所帮助?
我认为拥有简单的organizationId
字段就足够了,但我意识到稍后将其更改为manyToMany会很痛苦,所以我认为现在实现它会更好。
我将不胜感激任何解决方案/建议/最佳实践等。
最佳答案
n:m
关系是迄今为止最难处理的,并且确实没有一刀切的解决方案。最重要的是 read and understand this page and its sub-pages ,然后再阅读两遍以获得更好的效果。尝试一次专注于做一件事。我在本期概述了如何使用 FeathersJS 来解决这个问题:
https://github.com/feathersjs/feathers/issues/852#issuecomment-406413342
相同的技术可以应用于任何应用程序......基本流程如下:
首先创建或更新您的主要对象(用户、组织、角色等)。目前尚未建立任何关系。您需要先创建对象,然后才能建立任何关系。
创建或更新关系。这涉及使用步骤 #1 中的数据更新“连接”表(又名:“映射”或“通过”表)。连接表可以(并且应该)有自己的模型。它应该包含您关联的每个对象(userId、organizationId、roleId 等)的外键。您也可以将其他字段放入此表中。
这是一些关于如何定义模型的伪代码(为了简洁起见,仅显示相关代码)。它的内容比我下面描述的要多一些,但这应该可以帮助您入门。
const UserOrganizationRole = sequelize.define('User_Organization_Role', {
// Define any custom fields you want
foo: DataTypes.STRING
})
// Let sequelize add the foreign key fields for you.
// Also, save a reference to the relationship - we will use it later
User.Organization = User.belongsToMany(Organization, { through: UserOrganizationRole });
User.Role = User.belongsToMany(Role, { through: UserOrganizationRole });
Organization.User = Organization.belongsToMany(User, { through: UserOrganizationRole });
Role.User = Role.belongsToMany(User, { through: UserOrganizationRole });
...这是我处理插入的方法
const user = await User.create({ ... });
const org = await Organization.create({ ... });
const role = await Role.create({ ... });
await UserOrganizationRole.create({
userId: user.id,
organizationId: org.id,
roleId: role.id,
foo: 'bar'
});
...最后,像这样加载数据:
// Now we can reference those relationships we created earlier:
const user = await User.findById(123, {
include: [User.Organization, User.Role]
});
const org = await Organization.findById(456, {
include: [Organization.User]
});
关于node.js - 如何使用 Feathers 和 Sequelize 定义多对多,并在连接表中添加附加字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51827290/
我计划将数据文件格式从 parquet 更改为 feather。 Parquet 有压缩选项(lz4 等),我已经使用过它们。但我无法在 Feather 或箭头文件中找到它们。不支持压缩吗? 最佳答案
我同时使用 R 和 Python,我想将我的一个 pandas DataFrame 编写为一个 feather,以便我可以在 R 中更轻松地使用它。但是,当我尝试将其编写为 feather 时,我得到
在 Feathers 中,目标是将某个服务上可访问的数据限制为仅由当前登录用户拥有的数据。 假设我使用的是 Feathers 认证,这个服务上可用的数据存储在一个数据库表中,包含用户 ID 的表列称为
我尝试使用本地身份验证,但收到错误消息“无效登录”。 我从客户端发送“本地”授权。在服务器上接收数据 { strategy: 'local', email: 'email@gmail.co
我正在尝试在取自 Feather 球比赛的源音频文件中查找其中一名球员击球的实例。出于同样的目的,我用正面(命中声音)和负面(没有命中声音:评论/人群声音等)标签标记了时间戳,如下所示: shot_t
我有一个(每天增长的)大约 100 个大 excel 文件的列表,我用 Python 对其进行分析。由于我必须对所有文件运行几个循环,我的分析变得越来越慢。因此,我想将所有 excel 文件转换为 F
我正在处理一个包含 2000 万多条记录的非常庞大的数据集。我正在尝试将所有数据保存为 Feather 格式以便更快地访问,并在我继续分析时追加。 有没有办法将 Pandas 数据帧附加到现有的 Fe
我正在尝试根据关联表的值过滤数据,当我查找全部时它工作正常但是当我尝试按名称搜索时,我得到一个列不存在错误 我已经设置了一个钩子(Hook),如 https://github.com/feathers
我的 Feathers 应用程序需要能够具有两种 JWT 身份验证策略。对于users服务,我需要有,例如,all: [authenticate('carrier')]而不是 all: [authen
我确信这是非常简单的事情,但由于某种原因,我在尝试将feathersjs客户端与一个非常简单的jQuery应用程序集成时遇到超时。感兴趣的文件位于下面的 src 中。该存储库仅包含连接到 NedB 数
如何创建一个异步函数超时错误处理程序作为驻留在服务文件中的 Feather 中的钩子(Hook)来处理钩子(Hook)中的 Promise? 按照@Bergi on my previous quest
我有一项自定义服务,必须以 CSV 格式返回数据。 我无法使用标准 Express 路由,因为我需要在此端点上使用 Feathers 的 Hook 。 我找不到返回非 HTML、非 JSON 数据的
我正在尝试将 .rds file进入.feather file用于在 Python 中使用 Pandas 进行阅读。 library(feather) # Set working directory
有没有办法使用 pd.to_feather 附加到 .feather 格式文件? 我也很好奇是否有人知道最大文件大小方面的一些限制,以及在读取 .feather 文件时是否可以查询某些特定数据(例如读
我正在尝试将 .rds file进入.feather file用于在 Python 中使用 Pandas 进行阅读。 library(feather) # Set working directory
我应该使用 feather css 图标,但是图标在我的 mvc 元素上不起作用。我尝试更改文件路径,但它再次不起作用。 @font-face { font-family: "feather"
我是 Python 的新手,我正在尝试下载 feather库,但出现错误。我已经更新了 pip 和 setuptools,但我仍然遇到错误。这是我从 PyCharm 获得的输出: Collec
我正在使用 feathers.js 并尝试将对 payment-info.html 页面的访问限制为已登录的用户。 const app = feathers(); app.configure(conf
我正在评估 feathers.js对于一个项目。我喜欢它的愿望。因此,我决定尝试构建一个基本的内容管理系统,作为一种学习努力。事情进行的还算顺利。但是,我想在应用程序启动时将一些静态内容(文章)加载到
按照文档,我意识到有一个允许批量创建的选项,但我不明白在哪里以及如何设置该选项,这里是代码: // Initializes the `test` service on path `/test` con
我是一名优秀的程序员,十分优秀!