我正在学习 GraphQL 节点/Prisma 服务器教程,但由于代码中的某些问题而遇到错误。我已经解决了错误,但我想了解错误消息,特别是locations指的是什么?也就是说,我有location第 2 行第 3 列的一个,但是第 2 行第 3 列是什么?我的代码中的相关方法(signup在本例中为 )?我的突变?
// error message
{
"data": {
"signup": null
},
"errors": [
{
"message": "secretOrPrivateKey must have a value",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"signup"
]
}
]
}
Run Code Online (Sandbox Code Playgroud) 文档中包含的docker-compose.yml示例非常适合本地开发,在本地开发中,人们可能使用docker运行多个服务:
version: '3'
services:
prisma:
image: prismagraphql/prisma:__LATEST_PRISMA_VERSION__
restart: always
ports:
- "4466:4466"
environment:
PRISMA_CONFIG: |
managementApiSecret: __YOUR_MANAGEMENT_API_SECRET__
port: __YOUR_PRISMA_SERVER_PORT__
databases:
default:
connector: __YOUR_DATABASE_CONNECTOR__
migrations: __ENABLE_DB_MIGRATIONS__
host: __YOUR_DATABASE_HOST__
port: __YOUR_DATABASE_PORT__
user: __YOUR_DATABASE_USER__
password: __YOUR_DATABASE_PASSWORD__
mongo:
image: mongo:__LATEST_PRISMA_VERSION__
restart: always
ports:
- "27017:27017"
volumes:
- mongo:/var/lib/mongo
Run Code Online (Sandbox Code Playgroud)
但是,在生产中,没有db在容器中运行。实际上,我们正在使用DBaaS来托管数据库。我们正在使用的数据库是Mongo。
因此,我们需要将Prisma服务器从切换docker-compose up到docker run...。
我们面临的问题是如何设置Prisma容器运行所需的所有环境变量。
我看到两个可能的选择:
PRISMA_CONFIG_PATH指向yml配置文件的变量,例如,prisma_config.yml在docker-compose.yml中,该PRISMA_CONFIG变量作为多行字符串传递。
在Internet上搜索时,我发现单个变量的对应列表应为:
PORT: $PORT
SCHEMA_MANAGER_SECRET: $SCHEMA_MANAGER_SECRET
SCHEMA_MANAGER_ENDPOINT: $SCHEMA_MANAGER_ENDPOINT
SQL_CLIENT_HOST_CLIENT1: $SQL_CLIENT_HOST
SQL_CLIENT_HOST_READONLY_CLIENT1: $SQL_CLIENT_HOST
SQL_CLIENT_HOST: $SQL_CLIENT_HOST
SQL_CLIENT_PORT: $SQL_CLIENT_PORT
SQL_CLIENT_USER: $SQL_CLIENT_USER …Run Code Online (Sandbox Code Playgroud) 我在 Heroku 上有一个 Postgres 数据库,在部署数据模型时prisma deploy经常会产生以下错误。
ERROR: Whoops. Looks like an internal server error. Search your server logs for request ID: local:cjxrmcnpx00hq0692zuwttqwv
{
"data": {
"addProject": null
},
"errors": [
{
"message": "Whoops. Looks like an internal server error. Search your server logs for request ID: local:cjxrmcnpx00hq0692zuwttqwv",
"path": [
"addProject"
],
"locations": [
{
"line": 2,
"column": 9
}
],
"requestId": "local:cjxrmcnpx00hq0692zuwttqwv"
}
],
"status": 200
}
Run Code Online (Sandbox Code Playgroud)
在检查 Docker 日志时,我看到了这个错误:
Jul 14, 2019 12:18:34 PM org.postgresql.Driver connect
prisma_1 …Run Code Online (Sandbox Code Playgroud) Nexus 的订阅没有记录,但我搜索了 Github 并尝试了书中的每个示例。这对我来说不起作用。
我已经克隆了Prisma2 GraphQL 样板项目,我的文件如下:
datasource db {
provider = "sqlite"
url = "file:dev.db"
default = true
}
generator photon {
provider = "photonjs"
}
generator nexus_prisma {
provider = "nexus-prisma"
}
model Pokemon {
id String @default(cuid()) @id @unique
number Int @unique
name String
attacks PokemonAttack?
}
model PokemonAttack {
id Int @id
special Attack[]
}
model Attack {
id Int @id
name String
damage String
}
Run Code Online (Sandbox Code Playgroud)
const { GraphQLServer } = require('graphql-yoga') …Run Code Online (Sandbox Code Playgroud) 在我的数据模型中,作为 id 的类型,我想生成一个以用户开头的默认值。
所以 id 会像这样user..rear33422qeqr
type User {
myId: String! @default (`user${2+2}`)
name: String!
email: String! @unique
}
Run Code Online (Sandbox Code Playgroud)
是否可以调用 javascript 函数或使用字符串插值 ( user${2+2})
运行 prisma init 不会生成文件。它不会生成以下 3 个文件。
最终得到这个错误:-
{
"errors": [
{
"message": "Project not found: 'graphiql@default'",
"code": 3016,
"requestId": "local:api:cjh3r908l000s0834adw100sj"
}
]
}
Run Code Online (Sandbox Code Playgroud) 我需要有关Dockerize我的Prisma + GraphQL的帮助,我尝试了更多选项和技巧来解决此问题,但无法使其工作。
看起来当我实际运行应用程序时没有 Dockerize 应用程序工作完美,如下所示
但是在 Dockerize 应用程序之后,它向我显示如下错误
谁能帮我解决这个问题,我无法在本地环境中发布或 Dockerize 应用程序?
Dockerfile
# pull the official base image
FROM node:10.11.0
# set your working directory
WORKDIR /api
# install application dependencies
COPY package*.json ./
RUN npm install --silent
RUN npm install -g @prisma/cli
# add app
COPY . ./
# will start app
CMD ["node", "src/index.js"]
Run Code Online (Sandbox Code Playgroud) 这更像是一个设计问题,而不是一个编码问题。假设有以下架构:
// schema.prisma
// Solution 1
model Entity {
id Int @id @default(autoincrement())
attrs EntityAttr[]
}
model EntityAttr {
id Int @id @default(autoincrement())
value Json // or String, doesnt matter much here
// the point is I need to attach info on the
// join table of this relation
attr Attr @relation(fields: [attrId], references: [id])
entity Entity @relation(fields: [entityId], references: [id])
entityId Int
attrId Int
@@unique([entityId, attrId])
}
model Attr {
id Int @id @default(autoincrement())
entities EntityAttr[]
}
Run Code Online (Sandbox Code Playgroud)
// Solution …Run Code Online (Sandbox Code Playgroud) 我正在使用 Prisma 和 PostgreSQL。我在这里抓一些东西:
await prisma.items.findMany({
where: { itemId: itemId },
include: {
modules: {
include: {
lessons: true
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
我不需要订购它们items自己,但我想订购我拿回来的modules& 。lessons两者都有一个 INT 属性(称为:),number我可以在其上执行排序,但我不知道如何使用 prisma / postgresql 执行此操作,或者即使这是可能的。
有任何想法吗?
我正在尝试弄清楚如何访问我在应用程序中所做的更新突变中的 object.id 。
我有一个名为 IssueGroup 的对象。我已经创建和删除了突变,并且在大多数情况下,它们工作正常。我陷入了更新突变的困境,因为我似乎无法让它识别我正在尝试更新的对象的 id。
我有一个表格:
import * as React from "react"
import { gql } from "@apollo/client"
import type { IssueGroupInput } from "lib/graphql"
import { QueryMode, Role, SortOrder, useAllIssueGroupsQuery, useDeleteIssueGroupMutation, useUpdateIssueGroupMutation } from "lib/graphql"
import { AdminCreateIssueGroupForm } from "components/AdminCreateIssueGroupForm"
import { AdminUpdateIssueGroupForm } from "components/AdminUpdateIssueGroupForm"
import { Modal } from "components/Modal"
const __ = gql`
query AllIssueGroups {
allIssueGroups {
id
title
description
}
}
mutation deleteIssueGroup($id: String!) {
deleteIssueGroup(id: $id) {
id
title
description …Run Code Online (Sandbox Code Playgroud) prisma-graphql ×10
prisma ×8
graphql ×7
docker ×4
javascript ×2
nexus-prisma ×2
graphql-js ×1
nexus ×1
pgadmin ×1
postgresql ×1
prisma2 ×1
reactjs ×1
sql ×1
yaml ×1