Relational DatabasesDatabase performance
relational-databases/no-query-in-loop
Queries inside loops and collection callbacks should be batched or expressed set-wise when they depend on each item.
01 Examples
TypeScript
const users = await Promise.all(ids.map(id => db.user.findUnique({ where: { id } })));Finding
Disallow per-item relational queries.
02 Enable it
Setup
Install the package, register its plugin factory, then enable the rule.
Install the package
pnpm add -D @scruple/relational-databasesRegister the plugin
In scruple.config.ts, register the factory under the relational-databases namespace used by the rule ID.
import { relationalDatabases } from "@scruple/relational-databases";
plugins: {
"relational-databases": relationalDatabases(),
},Enable the rule
"relational-databases/no-query-in-loop": "warn"- Package
@scruple/relational-databases- Default threshold
- Plugin default
- Minimum confidence
- Plugin default