![](/img/trans.png)
[英]MongooseJS - How to specify a field of an object in an array of a document in Mongoose Populate Virtuals?
[英]Virtuals in mongoose, 'this' is empty object
好吧,我是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
当我在虚拟吸气剂的开头记录'this'时,它会打印{}。 我究竟做错了什么?
问题是virtual
arrow function
使用的arrow function
,同样的问题可以在这里找到ES6匿名函数和模式方法 ,原因是Lexical这个 arrow function
的arrow function
要解决此问题,请更改以下代码
objSchema.virtual('hour').get(function(){
console.log(this.created);
var d = new Date(this.created);
return d.getHours();
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.