diff --git a/packages/next/src/utilities/getPayload.ts b/packages/next/src/utilities/getPayload.ts index 4d6802ac3..1ddd95d7d 100644 --- a/packages/next/src/utilities/getPayload.ts +++ b/packages/next/src/utilities/getPayload.ts @@ -19,8 +19,11 @@ export const getPayload = async (options: InitOptions): Promise => { if (cached.payload) { const config = await options.config - if (cached.reload) { - cached.reload = false + if (cached.reload === true) { + let resolve + + cached.reload = new Promise((res) => (resolve = res)) + if (typeof cached.payload.db.destroy === 'function') { await cached.payload.db.destroy() } @@ -37,6 +40,11 @@ export const getPayload = async (options: InitOptions): Promise => { await cached.payload.db.init() await cached.payload.db.connect({ hotReload: true }) + resolve() + } + + if (cached.reload instanceof Promise) { + await cached.reload } return cached.payload