Mongoose extending a Schema with add()

JS
S
JavaScript

Plain simple example of how to extend a Schema.

1import * as mongoose from 'mongoose';
2import { Telemetry } from './telemetry.model';
3import { Schema } from 'mongoose';
4const telemetryInsertMiddleware = (req, res) => {
5    // Document
6    let doc;
7    const callback = function (err) {
8        if (err) return err;
9        res.sendStatus(200, doc)
10    };
11
12    // Conditional
13    if (req.body.securityLevel < 7) {
14        doc = new Telemetry(req.body);
15        Telemetry.findOneAndUpdate({ _id: req.params.id }, doc, callback);
16    } else {
17        // Extending Schema
18        const SecureTelemetry = Telemetry.schema.add({
19            requiresActivation: {
20                type: Boolean, default: false
21            }
22        }) as any;
23        doc = new SecureTelemetry(req.body);
24        SecureTelemetry.findOneAndUpdate({ _id: req.params.id }, doc, callback);
25    }
26}

Created on 1/24/2018