Max*_*ian 2 javascript getter-setter async-await
虚拟获取器和设置器背后的想法是什么?我们为什么需要它们?
我在观看教程时正在编写以下代码:
login: async args => {
const user = await User.findOne(args.email)
if (!user) {
throw new Error("Email doesn't exist!")
}
const isEqual = await bcrypt.compare(args.password, user.password)
if (!isEqual) {
throw new Error("Wrong Password!")
}
jwt.sign({userId: user.id})
}
Run Code Online (Sandbox Code Playgroud)
我在这里使用一个虚拟的吸气剂来提取,user.id但是我真的不明白这里发生了什么。
我在用猫鼬。
这里什么都没有进行,您正在获得的id属性user。
“虚拟属性”(无论如何通常在JS中定义)是一个看起来像属性的属性,但是可以(通过设置,获取或同时计算)进行计算。
如果要在设置或获取属性时执行其他逻辑,则需要“需要”它们,以获取各种“需要”值:您从不需要它们,但可能需要它们,有时它们很棒。
过度使用getter / setter 可能会带来不利影响,例如(至少AFAIK)您不能创建getter或setter async,这在某些情况下可能会出现问题,例如Mongoose的set功能会变成属性setter ,但您不能使其异步:https : //github.com/Automattic/mongoose/issues/2571