Skip to content

Don't check for nulls when running your Mongoose 5 queries - let rejected promises do it for you.

License

Notifications You must be signed in to change notification settings

Alorel/mongoose-find-or-throw-plugin

Repository files navigation

mongoose-throw-if-not-found-plugin

NPM link

Build Status Coverage Status Greenkeeper badge Supports Node >= 6

Don't check for nulls when running your Mongoose 5 queries - let rejected promises do it for you.

Before:

MyModel.findOne({foo: 'bar'})
  .then(doc => {
    if (!doc) {
      throw new Error('Doc not found');
    }
    
    useDoc(doc);
  });

After:

MyModel.findOne({foo: 'bar'})
  .throwIfEmpty()
  .then(doc => {
    useDoc(doc);
  })
  .catch(e => {
    console.log(e.status); // 404
    console.log(e.message); // Not found
    console.log(e.name); // MongooseDocumentNotFoundError
  })

Usage

Simply import the library once anywhere in your code:

require('mongoose-throw-if-not-found-plugin');

It'll handle itself from there ;)

TypeScript usage

While typings are provided, sometimes your IDE may fail to recognise them for code hints. If this happens, simply add the import to the file you're using it from:

import 'mongoose-throw-if-not-found-plugin';