- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试创建一个基于微服务的应用程序,该应用程序使用两个在 Docker 中运行的远程 Prisma/GraphQL 架构以及一个使用架构拼接对它们进行内省(introspection)的网关。
Prisma/GraphQL 架构:
// Profile Schema service - http:localhost:3000/profile
type Profile {
id: ID!
user_id: ID!
firstName: String!
...
}
type Query {
findProfileById(id: ID!): Profile
findProfileByUserID(user_id: ID!): Profile
}
// User Schema service - http:localhost:5000/user
type User {
id: ID!
profileID: ID!
email: String!
...
}
type Query {
findUserById(id: ID!): User
findUserByProfileID(profileID: ID!): Profile
}
现在在网关服务器中,我可以使用 graphql-tools 成功地内省(introspection)和合并模式,并且我添加了扩展类型以允许两种类型之间的关系
// LinkTypeDefs
extend type Profile {
user: User
}
extend type User {
userProfile: Profile
}
我按照 Apollo GraphQL 文档进行模式与远程模式的拼接,这是我现在合并的模式的解析器
app.use('/gateway', bodyParser.json(), graphqlExpress({ schema: mergeSchemas({
schemas: [
profileSchema,
userSchema,
linkTypeDefs
],
resolvers: mergeInfo => ({
User: {
userProfile: {
fragment: `fragment UserFragment on User { id }`,
resolve(user, args, context, info) {
return delegateToSchema({
schema: profileSchema,
operation: 'query',
fieldName: 'findProfileByUserId',
args: {
user_id: user.id
},
context,
info
},
);
},
},
},
Profile: {
user: {
fragment: `fragment ProfileFragment on Profile { id }`,
resolve(profile, args, context, info) {
return delegateToSchema({
schema: authSchema,
operation: 'query',
fieldName: 'findUserByProfileId',
args: {
profileID: profile.id
},
context,
info
})
}
}
}
}),
})
}));
我遇到的问题是每次我查询用户或个人资料的新扩展字段时它总是返回 null。我已确保已使用现有的 profileId 创建了 User 对象,同样使用具有现有 userId 的 Profile 对象创建了用户对象。这是查询结果的示例
我已经浏览了大约一周的文档,但似乎没有任何效果。据我了解,一切都已正确插入。希望有人可以提供帮助。我感觉这和碎片有关系。如果需要,我可以提供用户和配置文件对象的屏幕截图以进行更多说明。谢谢。
最佳答案
我最终通过将 delegateToSchema() 更改为 info.mergeInfo.delegate() 解决了该问题。这似乎成功了。
我还没有尝试过新更新的 info.mergeInfo.delegateToSchema 。如果更新的版本有效,我会更新这篇文章,但现在这对我来说已经可以了。
希望这可以帮助将来的人!
关于node.js - 模式拼接两个远程 Prisma/GraphQL 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51426869/
我想更改 prisma 文件夹的名称和位置。目前它叫做 prisma,它位于我的 nextjs 项目的根文件夹中。我想将它命名为 db 并将其放在 src 文件夹中。那可能吗?如果是,怎么办? 最佳答
我正在评估 Prisma,我是一个完整的菜鸟...... 我正在使用 Postgresql 我有以下模型定义 model Sth { id Int @d
我正在使用 Prisma 我有一个要搜索的 postgres 表,只查找匹配 where (id 和 accessKey) 或 (id 和 ownerId) 的记录 如果 accessKey 或 ow
上面一个是我在Vercel上部署MongoDB(Atlas URL)后端和Prisma作为ORM时遇到的问题。。我观察到部署时缺少@prisma/client实例。我已经创建了单独的文件Prisma对
上面一个是我在Vercel上部署MongoDB(Atlas URL)后端和Prisma作为ORM时遇到的问题。。我观察到部署时缺少@prisma/client实例。我已经创建了单独的文件Prisma对
我是 Prisma 的新手,虽然到目前为止它非常容易上手,但我遇到了一个我似乎无法找到好的答案的问题。我已经阅读了 docs about relation queries ,但据我了解,Prisma
我找不到任何示例来说明如何使用整数执行此操作,并且我的选项不起作用( 我的表包含 2 列整数,我需要使用 prisma 原始查询向其中添加多行。 如果我只添加 1 行并使用 Prisma.join()
以 Prisma 文档中的架构为例,我想查询 Users 以查找没有任何 posts 的任何用户。我可以像这样破解它,以便它检索所有帖子的 ID 都不大于 0 的每个用户,但这不是很优雅。有更好的方法
这是我的 datamodel.prisma 文件的相关部分。 type Driver { id: ID! @unique zones: [Zone!] @relation(name: "Dri
我正在使用 Prisma 1.9 和 Postgres。 如何重置所有内容?我已经尝试过 prisma local nuke ,但此命令会添加 MySQL 容器(以某种方式),然后抛出端口 4466
以 Prisma 文档中的架构为例,我想查询 Users 以查找没有任何 posts 的任何用户。我可以像这样破解它,以便它检索所有帖子的 ID 都不大于 0 的每个用户,但这不是很优雅。有更好的方法
这是我的 datamodel.prisma 文件的相关部分。 type Driver { id: ID! @unique zones: [Zone!] @relation(name: "Dri
我有以下查询,它给出了所有帖子和所有评论的计数。现在,我想计算已批准字段设置为 true 的帖子的所有评论数。我似乎无法弄清楚这一点。 prisma.post.findMany({ inclu
我发现您现在使用的是 MySQL 和 PostgreSQL,它们支持地理空间类型,我该如何对我的 prisma 执行地理空间查询。 假设我想获取纽约市附近的所有事件? 最佳答案 我使用 Prisma
运行prisma init 不会生成文件。它不会生成下面的 3 个文件。 datamodel.graphql docker-compose.yml 棱镜.yml 最终收到此错误:- { "e
我开始使用这个惊人的工具包,并注意到当我生成迁移文件时,Prisma 还会在新模式旁边创建一个 README 文件。该文件的副标题中恰好有我的个人姓名:This migration has been
我是 Prisma 和 Nodejs 的新手 我不小心创建了许多 Prisma Client 实例,这些实例一直显示警告 warn(prisma-client) 已经有 10 个 Prisma Cli
在 this example ,我们看到: 名称字符串? 不 💯 ? 在这里表示什么...... 最佳答案 这意味着在数据库中。该字段可以为空。这是可选的。 关于prisma-graphql - 定
我正在尝试计算 Prisma2 中的 self 关系(关注者)(使用 PostgreSQL) 型号: model User { id String @id @default(cui
嗨 - 我一直在关注 GraphQL/Prisma 教程 ( https://www.howtographql.com/graphql-js/6-authentication/ ),我想知道为什么要在
我是一名优秀的程序员,十分优秀!