Ambos son válidos y devuelven una nueva instancia de Mongoose.Schema
clase. Lo que esto significa es que ambos hacen exactamente lo mismo. Esta línea
comprueba si ya tiene una instancia de la clase Schema, si no, le devuelve una.
Para resumir, si llamas
var schema = new mongoose.Schema({})
tú mismo inicializas una instancia, mientras que si llamas
var schema = mongoose.Schema({})
mongoose inicializa uno para ti, con esto:
function Schema(obj, options) {
if (!(this instanceof Schema)) {
return new Schema(obj, options);
}
...