Extras
NestJS docs, code and samples
Nestjs-query docs, code and samples
- Getting started.
- List of automatic created
mutations
(for each entity):- createMany
- createOne
- updateMany
- updateOne
- deleteMany
- deleteOne
- List of automatic created
queries
(for each entity):- getOne (singular form of the resource name, e.g. 'tenant')
- getMany (plural form of the resource name, e.g. 'tenants')
Generate/update TS SDK
- The example app, has the capability to generate SDK (TS code, to be used by clients).
- The generation done via static code analysis, i.e. the generation can be done without running the app.
- To generate/update the SDK - run this command within the app's root folder:
$ npm run generate
- The generated code will be file 'generatedApi.ts', within the app's root folder.
- You can add custom mutations/queries in folder 'customOperations' (e.g. versions that not ask to return all the available properties), and after run the generation newly - the SDK will expose them.
Manage MongoDB migrations
Run command in this structure within the app's root folder:
npm run migrate [command] [options]
Usage:
npm run migrate [[create|up|down<migration-name>]|list|prune] [optional options]
Commands:
list Lists all migrations and their current state.
create <migration-name> Creates a new migration file.
up [migration-name] Migrates all the migration files that have not yet
been run in chronological order. Not including
[migration-name] will run UP on all migrations that
are in a DOWN state.
down <migration-name> Rolls back all migrations down to given name (if down
function was provided)
prune Allows you to delete extraneous migrations by
removing extraneous local migration files/database
migrations.
Options:
--autosync Automatically add any migrations on filesystem but not in db to db
rather than asking interactively (use in scripts)
-h, --help Show help
More details about migration infra see here: migrate-mongoose.
Example of migration file (in this sample - we change property name from 'department' to 'division' at 'up' migration, and reverse it at 'down' migration):
const mongoose = require('mongoose')
const typegoose = require('@typegoose/typegoose')
const userDato = require('./../dist/users/entities/user.dato')
const userModel = typegoose.getModelForClass(userDato.User)
async function up () {
await mongoose.connect('mongodb://localhost:27017/', { useNewUrlParser: true, useUnifiedTopology: true, dbName: 'test' })
await userModel.updateMany({}, {
$rename: { department: 'division' }
}, {
multi: true,
strict: false // The 'strict: false' allows to update keys that currently not exist in the dato class.
})
}
async function down () {
await mongoose.connect('mongodb://localhost:27017/', { useNewUrlParser: true, useUnifiedTopology: true, dbName: 'test' })
await userModel.updateMany({}, {
$rename: { division: 'department' }
}, {
multi: true,
strict: false // The 'strict: false' allows to update keys that currently not exist in the dato class.
})
}
module.exports = { up, down }
How to fix your local MongoDB installation
If you want to run tests with locks - you have to convert a Standalone to a Replica Set, here are the required steps:
- Run those commands to kill the MongoDB process:
pgrep mongo
kill <MongoDB Process ID> - Run this command within the app's root folder, to start MongoDB with the required configuration (do it in dedicated terminal, closing of the terminal will delete the DB data):
run-rs npm module
More info see Convert a Standalone to a Replica Set.