猫鼬虚拟定义。箭头函数与"Traditional"函数



我正在学习Express教程。

我在尝试访问我的一个虚拟模型时出错。

我的型号:

const mongoose = require('mongoose');
const authorSchema = mongoose.Schema({
first_name: {type: String, required: true, maxlength: 100},
family_name: {type: String, required: true, maxlength: 100}
});
// virtual for author's full name: 
authorSchema.virtual('name').get(
() => {
return `${this.first_name} ${this.family_name}`;
}
);

// Export model:
module.exports = mongoose.model('Author', authorSchema);

请求处理程序:

exports.get_author1 = (req,res, next) => {
Author.find().then(
(results) => {
res.end(results[0].name); 
// "results" returns a list of objects (each object represent an author in my db) here I am accessing the first author object of the list and using the dot notation to access its 'name' virtual. 
}
)
};

生成的答案是:未定义

在几个小时不明白我做错了什么之后,我把我的虚拟声明改为:

authorSchema.virtual('name').get(
function() {
return `${this.first_name} ${this.family_name}`;
}
);

使用function(({}而不是((=>{},现在得到了我想要的回应:Patrick Rothfuss

我的问题是传统的匿名函数(function(((有什么区别{}(和箭头函数(((=>{}(,尤其是关于它们在声明虚拟时的使用?

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions正如在MDN上所说,箭头函数不像传统函数那样绑定到this

相关内容

  • 没有找到相关文章

最新更新