使用或不使用“新”关键字创buildMongoose模式

我在网上看到的大部分例子都是这样做的…

var UserSchema = new mongoose.Schema({ name: String, age: String }); 

然而,最近我发现一本书做了上述…但没有新的关键字。

 var UserSchema = mongoose.Schema({ name: String, age: String }); 

我现在感到困惑。 我们是否使用新的关键字来创build模式或不。在这两种情况下会发生什么?

两者都是有效的,并返回一个Mongoose.Schema类的新实例。 这意味着两者完全相同。 这一行检查你是否已经有一个Schema类的实例,如果没有,它会为你返回一个。

总之,如果你打电话

 var schema = new mongoose.Schema({}) 

你自己初始化一个实例,而如果你打电话

 var schema = mongoose.Schema({}) 

mongoose为你初始化一个,用这个:

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