gpt4 book ai didi

node.js - 用于规范化数据的 Mongoose getter/setter

转载 作者:IT老高 更新时间:2023-10-28 13:25:58 26 4
gpt4 key购买 nike

我有 User 架构,其中有一个 username 字段。我希望这个字段区分大小写,以便用户可以注册诸如 BobDylan 之类的名称。但是,我需要我的架构来验证新条目以检查是否有重复的、区分大小写的,例如 bobdylan

我的研究告诉我,我应该在架构中创建一个额外的字段来存储小写/大写版本,以便我可以轻松检查它是否是唯一的。我的问题是,我将如何使用 Mongoose API 实现这一目标?

我尝试过使用set函数,比如:

UserSchema.path('username_lower_case').set(function(username_lower_case) {
return this.username.toLowerCase()
});

但是,这个函数似乎没有运行。我基本上需要告诉 username_lower_caseusername 是什么,但要小写。

最佳答案

一种方法是使用预保存 Hook 来执行此操作。

UserSchema.pre('save', function (next) {
this.username_lower_case = this.username && this.username.toLowerCase();
next();
});

另一种方法是将 username 设为虚拟:

UserSchema.virtual('username').set(function (value) {
this.username_raw = value;
this.username_lower_case = value && value.toLowerCase();
}).get(function () {
return this.username_raw;
});

关于node.js - 用于规范化数据的 Mongoose getter/setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14023937/

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