0.2.2 • Published 10 months ago

express-mongoose-ra-json-server v0.2.2

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

express-mongoose-ra-json-server

npm

Create express.js routes from a mongoose model for ra-data-json-server. Very useful for rapid prototyping with MongoDB, Mongoose, and react-admin.
Example/demo project is available here: express-mongoose-ra-json-server-demo

Installation

NPM: npm add express-mongoose-ra-json-server
Yarn: yarn add express-mongoose-ra-json-server
PNPM: pnpm add express-mongoose-ra-json-server

Client Usage

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.

Basic Usage

import raExpressMongoose from "express-mongoose-ra-json-server";
router.use("/user", raExpressMongoose(userModel));

More Configuration Options

Pass in the options as a second parameter to the function.
The currently exported typedefs contain just enough comments to describe what they do.

export interface raExpressMongooseOptions<T> {
  /** 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<T>) => Promise<Partial<T>>;

  /** Additional queries for list, e.g. deleted/hidden flag. */
  listQuery?: Record<string, any>;

  /** 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).

Supported Operators

MongoDB Query OperatorField SuffixDescription
$eq_eqMatches 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_gtMatches values that are greater than a specified value. Example: /user?createdAt_gt=2022-10-25T00%3A00%3A00.000Z
$gte_gteMatches values that are greater than or equal to a specified value. Example: /user?createdAt_gte=2022-10-25T00%3A00%3A00.000Z
$in_inMatches any of the values specified in an array. Example: /user?name_in=Alex&name_in=Peter
$lt_ltMatches values that are less than a specified value. Example: /user?createdAt_lt=2022-10-25T00%3A00%3A00.000Z
$lte_lteMatches values that are less than or equal to a specified value. Example: /user?createdAt_lte=2022-10-25T00%3A00%3A00.000Z
$ne_neMatches all values that are not equal to a specified value. Example: /user?name_ne=Alex
$nin_ninMatches none of the values specified in an array. Example: /user?name_nin=Alex&name_nin=Peter
0.2.1

10 months ago

0.2.0

10 months ago

0.2.2

10 months ago

0.1.0

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago