我正在关注 https://www.graph.cool/docs/1.0/quickstart/backend/typescript/typescript-rohd6ipoo4 for graphcool 并且我收到错误
{
"errors": [
{
"code": 3016,
"requestId": "api:api:cjc7gf91e002v0180uq2hqace",
"message": "Project not found: 'my-app@dev'"
}]}
Run Code Online (Sandbox Code Playgroud)
用于查询和变异。我是 graphcool 的新手,所以不知道为什么会这样。我正在按照上述链接中提供的步骤进行操作。
Graphql 服务器:
const server = new GraphQLServer({
typeDefs: './src/schema.graphql',
resolvers,
context: req => ({
...req,
db: new Graphcool({
endpoint: 'http://localhost:60000/my-app/dev',
secret: 'mysecret123',
}),
}),
})
$ graphcool info
Service Name: my-app
dev (cluster: `local`)
HTTP: http://localhost:60000/my-app/dev
Websocket: ws://localhost:60000/my-app/dev
Run Code Online (Sandbox Code Playgroud) 不能在具有列表标量类型的 graphql 操场中使用 set。
我已经创建了我的 Prisma datamodel.graphql 并部署了它。我的运动类型中的一个字段是运动列表。我使用列表标量类型来定义这个字段,并在我的mutation.js 文件中写入了伴随的mutation。当我尝试在我的 graphql 操场中添加新练习时,出现此错误。
{
"data": null,
"errors": [
{
"message": "Variable \"$_v0_data\" got invalid value {\"name\":\"split squat 3\",\"movement\":[\"push\",\"pull\"],\"liked\":false}; Field \"0\" is not defined by type ExerciseCreatemovementInput at value.movement.\nVariable \"$_v0_data\" got invalid value {\"name\":\"split squat 3\",\"movement\":[\"push\",\"pull\"],\"liked\":false}; Field \"1\" is not defined by type ExerciseCreatemovementInput at value.movement.",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"createExercise"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
这是我在 graphql 操场上写的突变。
mutation {
createExercise(
name: "split squat 3"
movement: …Run Code Online (Sandbox Code Playgroud) 刚开始使用Prisma作为将GraphQL和MySQL集成到我正在开发的新项目中的一种方法.这很棒,我喜欢它简单地解决问题.关于使用Prisma开发时要遵循的工作流程,我有几个问题困扰着我.
例如:
昨天我根据教程设置了基本的Prisma和GraphQL服务器.一切都运作良好.我只有一个在我的datamodel.graphql中建模的类型.
今天早上我醒来并开始处理另一种类型并将其添加到我的datamodel.graphql中.Docker正在运行,我使用解析器更新index.js以支持新模型及其Querys/Mutations.但是,当使用node ./index.js我运行系统时,我得到一个错误,说它不知道新的模型.我怀疑Prisma架构没有刷新/更新所以我跑,graphql get-schema --project prisma但它告诉我没有任何改变.
显然我错过了一些东西.我不是以他们想要的方式与Prisma合作.任何人都可以说明事情的顺序,以便事情顺利进行吗?
本教程非常适合让您启动并运行,但我觉得它并没有很好地向开发人员介绍在日常的持续开发周期中使用Prisma的流程.
任何信息/见解/链接都非常有用.
非常感谢,
一个
UPDATE
对于那些对工作流程有点迷失的人.看一下CLI参考.它对所有与Prisma相关的任务非常有用(不一定与GraphQL服务器有关).链接
TL; DR:
每次数据模型更改时,您都需要重新部署prisma服务,以便可以使用新功能更新生成的prisma.graphql以使用数据库.我跑了prisma deploy瞧!
以下有什么区别。何时使用其中一种而不是另一种?
zones: [Zone]
zones: [Zone!]
zones: [Zone]!
zones: [Zone!]!
Run Code Online (Sandbox Code Playgroud) 我想知道直接在解析器中使用 prisma 客户端或通过上下文传递它是否更好或者有什么区别。
在官方文档中它是通过上下文传递的:
const { prisma } = require('./generated/prisma-client');
const resolvers = {
Query: {
feed: (parent, args, context) => {
return context.prisma.posts({ where: { published: true } })
}
}
const server = new GraphQLServer({
typeDefs: './src/schema.graphql',
resolvers,
context: {
prisma,
},
})
Run Code Online (Sandbox Code Playgroud)
我的问题是:为什么 prisma 客户端不直接在解析器中使用。
const { prisma } = require('./generated/prisma-client');
const resolvers = {
Query: {
feed: (parent, args, context) => {
return prisma.posts({ where: { published: true } })
}
}
const server = new …Run Code Online (Sandbox Code Playgroud) 我有以下数据模型:
type Job {
// ...
example: String
selections: [Selection!]
// ...
}
type Selection {
...
question: String
...
}
Run Code Online (Sandbox Code Playgroud)
我这样定义我的对象类型:
export const Job = prismaObjectType({
name: 'Job',
definition(t) {
t.prismaFields([
// ...
'example',
{
name: 'selections',
},
// ...
])
},
})
Run Code Online (Sandbox Code Playgroud)
我这样做我的解析器:
t.field('createJob', {
type: 'Job',
args: {
// ...
example: stringArg(),
selections: stringArg(),
// ...
},
resolve: (parent, {
example,
selections
}, ctx) => {
// The resolver where I do a ctx.prisma.createJob and connect/create with …Run Code Online (Sandbox Code Playgroud) 我正在使用 Apollo 服务器来实现 GraphQL API,它会自动为我提供一个 GraphQL Playground。根据GraphQL Playground 文档,我应该拥有(或至少能够启用)一个“共享”功能,该功能将创建一个 GraphQL Bin 链接(例如https://graphqlbin.com/OksD),我可以将其发送给同事,以便他们可以查看并运行我的相同查询。
不幸的是,这不能从 Apollo 服务器开箱即用。我如何启用此功能?如果这是不可能的,是否有另一种简单的方法可以让我从 GraphQL Playground 导出查询以供其他人导入?(我看到“复制卷曲”选项,但我没有看到从卷曲导入的简单方法。)
我有表格原则和标签。并且它们之间存在多对多关系(隐式连接)。
如果不使用prisma.raw,我如何运行以下查询?
SELECT p.id, p.title, p.description, p.createdAt, p.modifiedAt
FROM principle p
WHERE EXISTS (SELECT NULL
FROM _PrincipleToTag pt
WHERE pt.B IN (${tagIds.join(',')})
AND pt.A = p.id
GROUP BY pt.A
HAVING COUNT(DISTINCT pt.B) = ${tagIds.length})
Run Code Online (Sandbox Code Playgroud)
如何更新此 Prisma 2 查询,以便返回的原则仅是与所有提供的 tagId 关联的原则?
export const principles = ({ tagIds }) => {
const payload = {
where: {
//TODO filter based on tagIds
},
}
return db.principle.findMany(payload)
}
Run Code Online (Sandbox Code Playgroud)
文档提到了containsandin和every,但我找不到我想要做的事情的例子。
我正在使用 RedwoodJs、Prisma 2、Apollo、GraphQL。 …
我正在尝试将文件从前端应用程序上传到服务器,但我不断收到这个奇怪的错误,并且不知道为什么会发生这种情况。
错误是前端:
Variable "$file" got invalid value {}; Expected type Upload. Upload value invalid.
Run Code Online (Sandbox Code Playgroud)
后台报错:
GraphQLError: Upload value invalid.
at GraphQLScalarType.parseValue (/app/backend/node_modules/graphql-upload/lib/GraphQLUpload.js:66:11)
Run Code Online (Sandbox Code Playgroud)
这就是我添加上传标量的方法
Variable "$file" got invalid value {}; Expected type Upload. Upload value invalid.
Run Code Online (Sandbox Code Playgroud)
这就是我在 React/NextJS 应用程序中制作 uplaod 客户端的方法
GraphQLError: Upload value invalid.
at GraphQLScalarType.parseValue (/app/backend/node_modules/graphql-upload/lib/GraphQLUpload.js:66:11)
Run Code Online (Sandbox Code Playgroud)
即使当尝试使用前端应用程序以外的其他东西运行突变时,我也会遇到相同的错误,所以我猜问题出在我的后端设置上,尽管我搜索了很多方法来做到这一点似乎都不起作用。
select *
from WeeklyChallengeCourses
where weekly_challenge_id = (select weekly_challenge_id
from WeeklyChallengeCourses
where course_id = 210);
Run Code Online (Sandbox Code Playgroud)
结果将是以下选定的一项:
const data = await context.prisma.weeklyChallengeCourses.findMany({
where:{
weekly_challenge_id: {
..............
}
},
});
Run Code Online (Sandbox Code Playgroud) prisma-graphql ×10
prisma ×8
graphql ×7
nexus-prisma ×2
apollo ×1
graphcool ×1
javascript ×1
node.js ×1
postgresql ×1
react-apollo ×1
redwoodjs ×1