document.property和document.get('property')有什么区别?

时间:2019-07-03 00:34:50

标签: javascript node.js mongodb mongoose

我有一个启用了时间戳选项的猫鼬文档。我想根据这个时间戳做决定,但是根据我的理解,我发现有些奇怪。

我试图以传统方式(document.createdAt)获得这些值,但返回undefined。但是,如果我使用document.get('createdAt'),该值将显示在数据库中。该文档对此没有说什么。我的问题是:¿为什么时间戳会这样?

编辑

我使用的模式具有一系列嵌入式模式:

const Customer = new mongoose.Schema({
    roles: {
      type: [{
        type: String,
        enum: 'app b2b iot'.split(' '),
      }],
      default: 'app',
      set: (value = []) => (value.includes('app')
        ? value
        : value.concat('app')),
    },
    email: {
      address: {
        type: String,
        trim: true,
        lowercase: true,
        set(email) {
          this._previousEmail = this.email.address
          return email
        },
      },
      verified: {
        type: Boolean,
      },
      token: String,
    },
    nickname: {
      type: String,
      trim: true,
    },
    recoveryToken: String,

    gender: String,
    birthday: String,
    lastLogin: Date,
    isAnonymous: {
      type: Boolean,
      default: false,
    },
    devices: [Device],
});

设备架构:

const Device = new mongoose.Schema({
    customer: {
      type: ObjectId,
      ref: 'Customer',
      required: true,
    },
    handle: {
      type: String,
    },
    platform: {
      type: String,
      required: true,
      set: toLowerCase,
    },
    info: Mixed,
    smartFilterTags: [{
      type: String,
    }],
    paidUntil: Date,
    nh: {
      tier: String,
      _id: {
        type: ObjectId,
      },
    location: {
      type: {
        type: String,
        enum: ['Point'],
        default: 'Point',
      },
      coordinates: [{
        type: Number,
      }],
    },
  })

我有一个基本插件,可在编译模型时应用:

function basePlugin(schema) {
    schema.add({
      archivedAt: Date,
    })

    schema.set('timestamps', true)

    schema.set('toJSON', {
      virtuals: true,
    })

    schema.set('toObject', {
      virtuals: true,
    })
}

0 个答案:

没有答案