我正在尝试为我的pyramida数据模型生成模式,同时使用秘密来限制对pyramida的访问。运行prisma delete
和prisma 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());
}
答案 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
很抱歉,我认为这不能直接回答您的问题,但是无论哪种方式都可以提供帮助。