Tom*_*und 5 postgresql apollo next.js vercel
我有一个基于此模板构建的小型爱好网络应用程序:https ://github.com/tomsoderlund/nextjs-pwa-graphql-sql-boilerplate
\n它使用 ElephantSQL\xe2\x80\x99s 免费层(5 个连接),在 Zeit Now v2 无服务器函数 \xe2\x80\x93 上运行,并不断耗尽 Postgres 连接(\xe2\x80\x9c角色“djsktctf 的连接过多”) “ \xe2\x80\x9d)。
\nI\xe2\x80\x99m 使用death
NPM 关闭连接 - 位于/api/graphql/index.js
:
const { ApolloServer, gql } = require(\'apollo-server-micro\')\nconst { config } = require(\'../../config/config\')\n\n// Postgres (pg)\nconst { Pool } = require(\'pg\')\nconst onProcessDeath = require(\'death\')\nconst pool = new Pool({ connectionString: config.databaseUrl })\nlet client\n\nconst initDatabaseClient = async () => {\n if (!client) client = await pool.connect()\n}\ninitDatabaseClient()\n\nonProcessDeath((signal, err) => {\n client && client.release()\n})\n\nconst typeDefs = gql`\n ${require(\'../../graphql/font/schema\')}\n`\n\nconst resolvers = {\n ...require(\'../../graphql/font/resolvers\')(pool)\n}\n\nconst server = new ApolloServer({\n typeDefs,\n resolvers,\n introspection: true,\n playground: true\n})\n\nmodule.exports = server.createHandler({ path: config.graphqlPath })\n
Run Code Online (Sandbox Code Playgroud)\n然后里面resolvers
是这样的:
module.exports = (pool) => ({\n Query: {\n async articles (parent, variables, context, info) {\n const sqlString = `SELECT * FROM article LIMIT 100;`\n const { rows } = await pool.query(sqlString)\n return rows\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n我该如何改进以避免连接耗尽?
\n得到下面的答案后,我使用client.end()
而不是使用共享客户端更新了我的代码:
// const results = await runDatabaseFunction(async (pool) => { ... })\nconst runDatabaseFunction = async function (functionToRun) {\n // Connect db\n const client = await pool.connect()\n // Run function\n const results = await functionToRun(client)\n // Release db\n await client.end()\n await client.release()\n return results\n}\n
Run Code Online (Sandbox Code Playgroud)\n
我认为这个问题来自于
client = await pool.connect()
它似乎保存着你的数据库。所以你需要断开你和数据库之间的连接。
如果您await client.end()
在上次获取数据后添加,则错误可能会消失。
就我而言,这种方式解决了问题。
归档时间: |
|
查看次数: |
2748 次 |
最近记录: |