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
当我记录这个'在虚拟吸气剂的开头,它打印{}。 我究竟做错了什么?
答案 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();
});