gpt4 book ai didi

javascript - 什么是 Javascript 中的虚拟 Getter 和 Setter?

转载 作者:行者123 更新时间:2023-12-04 01:27:32 25 4
gpt4 key购买 nike

虚拟 getter 和 setter 背后的想法是什么?为什么我们需要它们?

我在观看教程时正在编写以下代码:

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})
}

我在这里使用虚拟 getter 来提取 user.id 但我真的不明白这里发生了什么。

我正在使用 Mongoose。

最佳答案

这里没有任何“进展”,您正在获取 userid 属性。

“虚拟属性”(通常在 JS 中定义)是一种属性,它看起来像一个属性,但可以计算(通过设置、获取或两者)。

如果您想在设置或获取属性时针对各种“需要”值执行额外的逻辑,则您“需要”它们:您永远不需要它们,但您可能想要 他们——有时他们很棒。

过度使用 getters/setters 有潜在的缺点,比如(至少 AFAIK)你不能制作 getters 或 setters async,这在在某些情况下,例如 Mongoose 的 set 接受一个函数,该函数将被转换为属性 setter ,但您不能使其异步:https://github.com/Automattic/mongoose/issues/2571

关于javascript - 什么是 Javascript 中的虚拟 Getter 和 Setter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57167611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com