使用或不使用“new”关键字创建Mongoose架构?

时间:2016-09-27 08:11:50

标签: node.js mongodb mongoose

我在网上看到的大部分例子都是......

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

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

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

我现在很困惑。我们是否使用new关键字来创建模式?在两种情况下会发生什么?

1 个答案:

答案 0 :(得分:4)

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

总结一下,如果你打电话

var schema = new mongoose.Schema({})

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

var schema = mongoose.Schema({})

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

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