What's the proper way to access database/api?
Let's say I want to fetch products from the database.
that's the old way:
import express from "express";
import markoPlugin from "@marko/express";
import template from "./template.marko";
const app = express();
app.use(markoPlugin()); // Enables `res.marko(template, input)`
app.get("/", function (req, res) {
const products = req.db.find(...)
res.marko(template, {
products
});
});
app.listen(8080);
What's the proper way to do the same in marko/run?
I tried something like this in +handler.js
export const GET: MarkoRun.Handler = ({ request, platform }, next) => {
platform.response.locals = {
data: Math.random()
}
next()
};
and then in +page.marko
<h1>${$global.platform.response.locals.data}</h1>
but i'm not sure it's the best way.
I don't think this is the right forum to ask support questions like these; try https://discord.com/invite/marko next time.
But in short, I think the best way to do this is to add a +middleware.js early on, that appends your database connector to context aka $global, using something like context.dbClient = dbClient. This way, you only ever need to create +page.marko with <await($global.dbClient.find(...))> and don't have to litter your code with +handler.js everywhere.