creates express.js routes from a mongoose model for ra-data-json-server
npm install express-mongoose-ra-json-servernpm add express-mongoose-ra-json-server
yarn add express-mongoose-ra-json-server
pnpm add express-mongoose-ra-json-server
ts
import jsonServerProvider from "ra-data-json-server"; // Use ra-data-json-server
const apiUrl = "api/admin"; // Fill this in with your own URL or whatever you wish.
const dataProvider = jsonServerProvider(apiUrl, httpClient);
`
Usage
Refer to the typescript definitions in index.ts for a more complete information.
$3
`ts
import raExpressMongoose from "express-mongoose-ra-json-server";
router.use("/user", raExpressMongoose(userModel));
`
$3
Pass in the options as a second parameter to the function.
The currently exported typedefs contain just enough comments to describe what they do.
`ts
export interface raExpressMongooseOptions {
/* Fields to search from ?q (used for autofill and search) /
q?: string[];
/* Base name for ACLs (e.g. list operation does baseName.list) /
aclName?: string;
/* Fields to allow regex based search (non-exact search) /
allowedRegexFields?: string[];
/* Regex flags for regex-based search /
regexFlags?: string;
/* Read-only fields to filter out during create and update /
readOnlyFields?: string[];
/* Function to transform inputs received in create and update /
inputTransformer?: (input: Partial) => Promise>;
/* Additional queries for list, e.g. deleted/hidden flag. /
listQuery?: Record;
/* Max rows from a get operation to prevent accidental server suicide (default 100) /
maxRows?: number;
/* Extra selects for mongoose queries (in the case that certain fields are hidden by default) /
extraSelects?: string;
/* Disable or enable certain parts. /
capabilities?: raExpressMongooseCapabilities;
/* Specify a custom express.js router /
router?: Router;
/* Should all queries use lean? (default = true) /
useLean?: boolean;
/* Specify an ACL middleware to check against permissions /
ACLMiddleware?: (name: string) => RequestHandler;
}
`
Query Operators
MongoDB Query Operators can be used by appending them as a suffix to the field name (see here).
$3
| MongoDB Query Operator | Field Suffix | Description |
| ---------------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| $eq | \_eq | Matches values that are equal to a specified value.
(Useful for matching exact values if a field is included in allowedRegexFields)
Example: /user?name_eq=Alex |
| $gt | \_gt | Matches values that are greater than a specified value.
Example: /user?createdAt_gt=2022-10-25T00%3A00%3A00.000Z |
| $gte | \_gte | Matches values that are greater than or equal to a specified value.
Example: /user?createdAt_gte=2022-10-25T00%3A00%3A00.000Z |
| $in | \_in | Matches any of the values specified in an array.
Example: /user?name_in=Alex&name_in=Peter |
| $lt | \_lt | Matches values that are less than a specified value.
Example: /user?createdAt_lt=2022-10-25T00%3A00%3A00.000Z |
| $lte | \_lte | Matches values that are less than or equal to a specified value.
Example: /user?createdAt_lte=2022-10-25T00%3A00%3A00.000Z |
| $ne | \_ne | Matches all values that are not equal to a specified value.
Example: /user?name_ne=Alex |
| $nin | \_nin | Matches none of the values specified in an array.
Example: /user?name_nin=Alex&name_nin=Peter` |