我来设置。
我正在通过Sequelize动态创建成员联接表,如下所示:
`Event.belongsToMany(models.User, {
through: models.Member,
foreignKey: {
name: "eventId",
field: "event_id"
}
});`
`User.belongsToMany(models.Event, {
through: models.Member,
foreignKey: {
name: "email",
field: "email"
}
});`
我的成员模型代码确实有一个唯一字段role
。该文件如下所示:
`export default (sequelize, DataTypes) => {
const Member = sequelize.define("member", {
role: DataTypes.STRING
});
return Member;
};`
最后,我有一个带有 role 字段的成员表,还有与用户( email )和事件( eventId < / strong>)。
我的两个问题
答案 0 :(得分:0)
我会指出您指向GraphQL Relay。在GraphQL中,您将:
interface Node {
id: ID!
}
type Member implements Node {
id: ID!
role: Role!
email: String!
event: Event!
}
type Event implements Node {
id
...whatever
}
type Role {
...whatever this has
}
type Query {
node: Node
member: Member
}
,您将查询:
query GetPerson {
member {
id
email
role {
...whatever fields on role
}
event {
id
name
}
}
}
在所有这些情况下,“ id”都是“ NodeId”,它是:的base64编码值。例如RXZlbnQ6MTIzNDU2Nzg5MA==
将是ID为1234567890
的事件的ID。这将为您提供足够的信息以显示您的第一视图。然后,要显示第二个视图,您将进行查询:
query GetEvent {
node(id:"RXZlbnQ6MTIzNDU2Nzg5MA==") {
... on Event {
name
address
whatever
}
}
}
这为您提供了足够的信息来获取第二个视图的数据。在服务器上,query.node解析器base64将您传入的id
解码回Event:1234567890
,然后生成一些getEventById("1234567890")
并返回该新对象的东西。
请记住:您从GraphQL获得的价值来自您的数据点之间的关系。您可以根据需要嵌套它们,并要求您构建视图所需的所有内容以及绘制下一个视图所需的ID。如果您想一次获取一个对象,那么REST就足够了。