I'm working on a new website, and although things were working well as we developed locally we've run into an issue when we tried to deploy on Vercel. The app uses the Sapper framework for both the pages and an API, and a database in MongoDB Atlas that we access through Mongoose. The behavior we have locally is that we `npm run dev` and a single DB connection is made which persists until we shut the app down.

[![Local logs](https://i.stack.imgur.com/QjCVP.png)](https://i.stack.imgur.com/QjCVP.png)

When it gets deployed to Vercel though, the code which makes the DB connection and prints that "DB connection successful" message and is only supposed to run once is instead run on every API request

[![New DB connection per request](https://i.stack.imgur.com/EFyza.png)](https://i.stack.imgur.com/EFyza.png)

This seems to quickly get out of hand, reaching our database's limit of 500 connections:
[![DB connections hits limit](https://i.stack.imgur.com/DvCUS.png)](https://i.stack.imgur.com/DvCUS.png)

As a result, after the website is used briefly even by a single user some of our API requests start failing with this error (We have the db accepting any connection rather than an IP whitelist, so the suggestion the error gives isn't helpful):
[![API can't connect to DB](https://i.stack.imgur.com/It66K.png)](https://i.stack.imgur.com/It66K.png)

Our implementation is that we have a call to `mongoose.connect` in a .js file:

```
mongoose.connect(DB, {
    useNewUrlParser: true,
    useCreateIndex: true,
    useFindAndModify: false,
    useUnifiedTopology: true
}).then(() => console.log("DB connection successful!")).catch(console.error);

```

and then we `import` that file in Sapper's `server.js`. The recommendation we've been able to find is "just cache the connection", but that hasn't been successful and seems to be more of a `node-mongodb-native` thing. Regardless, this is what we tried which didn't work better or worse locally, but also didn't fix the problems on Vercel:

```
let cachedDb = {};

exports.connection = async () => {
    if (cachedDb.isConnected)
        return;
        try {
            const db = await mongoose.connect(DB, {
                            useNewUrlParser: true,
                            useCreateIndex: true,
                            useFindAndModify: false,
                            useUnifiedTopology: true
                        });
            cachedDb.isConnected = db.connections[0].readyState;
            console.log("DB connection successful!");
            return cachedDb;
        } catch(error) {console.log("Couldn't connect to DB", error);}

```

So... is there a way to make this work without replacing at least one of the pieces? The website isn't live yet so replacing something isn't the end of the world, but "just change a setting" is definitely preferred to starting from scratch.