mongoose中的虚拟,'这个'是空物

时间:2016-03-04 11:03:05

标签: node.js mongodb mongoose mongoose-schema

好吧,我是mongoose的新手,并试图了解如何使用虚拟属性。这是我正在测试的示例代码。

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var objSchema = new Schema({
  created: {type: Number, default: Date.now()},
});

objSchema.virtual('hour').get(()=>{
  //console.log(this);
  var d = new Date(this.created);
  return d.getHours();
});

var obj = mongoose.model('obj', objSchema);

var o = new obj();
o.toObject({virtuals: true});
console.log(o.created);
console.log(o.hour);

所以我希望日志类似于:

1457087841956
2

但输出是

1457087841956
NaN

当我记录这个'在虚拟吸气剂的开头,它打印{}。 我究竟做错了什么?

1 个答案:

答案 0 :(得分:27)

问题是arrow function功能中使用的virtual,同样的问题可以在ES6 anonymous function and schema methods找到,原因是arrow function的{​​{3}}功能< / p>

要解决此问题,请更改以下代码

objSchema.virtual('hour').get(function(){
    console.log(this.created);
    var d = new Date(this.created);
    return d.getHours();
});