Creating Mongoose Schemas with or without 'new' keyword?

Both are valid and returns a new instance of the Mongoose.Schema class. What this means is that both does exactly the same. This line checks whether you already have an instance of the Schema class, if not, it returns one for you.

To summarize, if you call

var schema = new mongoose.Schema({})

you initialize an instance yourself, while if you call

var schema = mongoose.Schema({})

mongoose initializes one for you, with this:

function Schema(obj, options) {
  if (!(this instanceof Schema)) {
    return new Schema(obj, options);
  }
  ...