找不到pyramida.yml

时间:2019-12-20 22:07:39

标签: graphql apollo prisma prisma-binding

我正在尝试为我的pyramida数据模型生成模式,同时使用秘密来限制对pyramida的访问。运行prisma deleteprisma deploy之后,我运行命令graphql get-schema -p prisma并得到以下错误消息:

  

找不到✖棱镜/prisma.yml。

我在.graphqlconfig中做错什么了吗,或者我如何列出我的pyramida.yml?谢谢。

.graphqlconfig:

{
  "projects": {
    "prisma": {
      "schemaPath": "generated/prisma.graphql",
      "extensions": {
        "prisma": "prisma/prisma.yml",
        "endpoints": {
          "default": "http://localhost:4466"
        }
      }
    }
  }
}

prisma / prisma.yml:

endpoint: http://localhost:4466
datamodel: datamodel.prisma
secret: 'secretFoo'

index.js:

import http from 'http';
import express from 'express';
import { ApolloServer } from 'apollo-server-express';
import resolvers from './resolvers';
import schema from './generated/prisma.graphql';
import { Prisma } from 'prisma-binding';

const prisma = new Prisma({
  endpoint: 'http://localhost:4466',
  secret: 'secretFoo',
  typeDefs: 'server/generated/prisma.graphql',
});

const server = new ApolloServer({
  context: {
    prisma,
  },
  resolvers,
  typeDefs: schema,
});

const app = express();
server.applyMiddleware({ app });

const PORT = 5000;

const httpServer = http.createServer(app);
server.installSubscriptionHandlers(httpServer);

httpServer.listen(PORT, () => {
  console.log(`Server ready at http://localhost:${PORT}${server.graphqlPath}`);
  console.log(`Subscriptions ready at ws://localhost:${PORT}${server.subscriptionsPath}`);
});

if (module.hot) {
  module.hot.accept();
  module.hot.dispose(() => server.stop());
}

1 个答案:

答案 0 :(得分:1)

通过将以下内容添加到文件中,您可以直接从prisma.yml文件中生成模式:

generate:
  - generator: graphql-schema
    output: ./generated/prisma.graphql

然后,您可以将.graphqlconfig引用到生成的文件:

projects:
  prisma:
    schemaPath: generated/prisma.graphql
    extensions:
      endpoints:
        dev: http://localhost:4466

通常,您将通过Prisma docker-compose文件({{1}中的managementApiSecret)来限制对端点管理功能的访问。然后,当您运行诸如PRISMA_CONFIG之类的命令时,您需要通过prisma deploy标志或在应用程序目录的根目录中有一个dotenv文件来传递适当的环境变量(您还需要{{ 1}}软件包安装在--env-file中。

保护端点安全的另一种方法是完全禁用GraphQL Playground。我相信将dotenv设置为生产后,Apollo Server会自动执行此操作,尽管您可以使用以下方式明确地执行此操作:

package.json

很抱歉,我认为这不能直接回答您的问题,但是无论哪种方式都可以提供帮助。