@cytex/elastictype
A Object Document Mapping (ODM) manager for Elasticsearch written in TypeScript.
⚠️ This project is still in development and not ready for production use. ⚠️
Can't wait to use it? Feel free to
contribute.
📝 Table of Contents
🧐 About
Elastictype is a easy way to model application data stored in Elasticsearch. It is inpsired by mongoose and @nestjs/mongoose and thus includes type casting, validation, query building, hooks and much more. It is written in TypeScript and thus provides type safety.
🏁 Features
- Type casting
- Validation
- Query building
- Hooks
- Type safety
- Intuitive index declaration via Decorators
🏁 Getting Started
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
Prerequisites
Please make sure you have installed the following tools:
Installing
Install the package via npm:
npm install @cytex/elastictype --save
or via yarn:
yarn add @cytex/elastictype
🎈 Usage
Basic usage
import {
BaseSchema,
ElasticField,
ElasticDataType,
Index,
Model,
} from "@cytex/elastictype";
@Index({
name: "cats",
})
export class Cat extends BaseSchema<Cat> {
@Prop(ElasticDataType.Keyword)
public name: string;
@ElasticField({
type: ElasticDataType.Integer,
})
public age: number;
}
Cat.syncMapping();
const cat = new Cat();
cat.name = "Garfield";
cat.age = 42;
await cat.save();
await cat.update({ age: 43 });
await cat.delete();
const cats = await Cat.find({ age: 43 });
const cat = await Cat.findById("foo");
🔧 Running the tests
Tests are written with jest. You can run them with the following command:
npm run test
⛏️ Built Using
✍️ Authors
🎉 Acknowledgements
- Nestjs - Node.js framework
- mongoose - MongoDB object modeling for Node.js
- @nestjs/mongoose - Mongoose module for Nest framework (not used in this project but inspired by it)