We don't want to use HTTP here.  The right way is to split up your `blacklist.js` file into two parts (they can be named the same thing, but in different dirs).  The first will be the part that talks to Mongodb, and does creation and lookups.  It won't know anything about HTTP responses, requests, or result codes--it will just use standard JS primitives/objects.

```javascript
// lib/blacklist.js
module.exports = function( Blacklist ) {
  return {
    add: function( word, callback ) {
      var entry = new Blacklist( word );
      // Delegates all validation to mongoose during this step
      entry.save( function( err, entry ) {
        if ( err ) {
          callback( err );
          return;
        }
        callback();
      });
    },
    find: function ( word ) {
      Blacklist.findOne({ word: word }, function ( err, entry ) {
        if ( err ) {
          callback( err );
          return;
       }
       callback( null, !!entry );
    }
  }
};
```
The second file wraps `lib/blacklist.js` with HTTP logic, creating route endpoints:

```javascript
var blacklist = require("../../../lib/blacklist.js");

module.exports = {
  create: function ( req, res ) {
     blacklist.add( req.body, callback( function( err ) {
        if ( err ) {
          res.json( 500, { error: err } );
          return;
        }
        res.send( 200 );
      });
   },
   find: function ( req, res ) {
     blacklist.find( req.params.word, function( err, found ) {
       if ( err ) {
         res.json( 500, { error: err } );
         return;
       }
       res.send( found ? 200 : 404 );
     });
  }
}; 
```

I haven't tested this code, so it will probably need some fixes, but that's the general idea: one library module, one routes module.