codecombat/server/levels/components/LevelComponent.coffee
Nick Winter 58716f5b75 Revert "Fixed #1076, and all other instances of empty objects being stripped out of documents. Turns out mongoose was doing this intentionally as a feature? I don't understand why that's on by default. Oh mongoose."
Saw that this caused 500s on /auth/whoami with no cookies set, with this error:

debug: 500: MongoError: E11000 duplicate key error index: coco.users.$emailLower_1 dup key: { : null }

Probably we need to be much more careful about what changes this blanket change to the minimize Mongoose option might introduce, since tests didn't catch this, but it would have taken the site down for anyone not logged in already.

This reverts commit 121f07d020.
2015-01-09 18:30:05 -08:00

27 lines
1 KiB
CoffeeScript

mongoose = require 'mongoose'
plugins = require '../../plugins/plugins'
jsonschema = require '../../../app/schemas/models/level_component'
LevelComponentSchema = new mongoose.Schema {
description: String
system: String
}, {strict: false}
LevelComponentSchema.plugin plugins.NamedPlugin
LevelComponentSchema.plugin plugins.PermissionsPlugin
LevelComponentSchema.plugin plugins.VersionedPlugin
LevelComponentSchema.plugin plugins.SearchablePlugin, {searchable: ['name', 'searchStrings', 'description']}
LevelComponentSchema.plugin plugins.PatchablePlugin
LevelComponentSchema.plugin plugins.TranslationCoveragePlugin
LevelComponentSchema.pre('save', (next) ->
name = @get('name')
strings = _.str.humanize(name).toLowerCase().split(' ')
for char, index in name
continue if index is 0
continue if index is name.length - 1
strings.push(name.slice(0,index).toLowerCase())
@set('searchStrings', strings.join(' '))
next()
)
module.exports = LevelComponent = mongoose.model('level.component', LevelComponentSchema)