首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >beforeValidate()在sails.js中的逻辑

beforeValidate()在sails.js中的逻辑
EN

Stack Overflow用户
提问于 2016-11-10 10:21:52
回答 1查看 902关注 0票数 0

我是sails.js的新手,经过一些工作后,我发现beforeValidate()很难使用。

我有一个模型User,只有两个属性:nicknameage。这两个属性都被标记为required,因此sails将检查验证。在创建用户时,如果客户端没有指定它的昵称,我想为它指定一个随机昵称,如下所示:

代码语言:javascript
复制
beforeValidate: function(user, next){
    if (!user.nickname) user.nickname = randomString(5);
    next();
}

这个赋值应该在sails验证nicknamenickname标记之前应用,因此beforeValidate()似乎是唯一合理的位置。但是,当我想更新用户的年龄时,如下所示:

代码语言:javascript
复制
User.update(user.id, {age: 40});

它还将触发beforeValidate(),遗憾的是,将指定一个新的昵称并替换原来的昵称,因为beforeValidate()中的参数user现在是{age: 40}

我所期望的是,beforeValidate(user, callback)中的参数beforeValidate(user, callback)应该更新user,将已更改和未更改的属性(例如,具有旧id、旧昵称和新时代的用户)结合在一起,而不是只修改我在User.update()中指定的属性(例如,只有{age: 40})。

我是不是误解了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-15 18:14:04

在调用create()时,向beforeValidate传递添加新记录所需的所有值。然而,在调用update()时,只将更新的值传递给beforeValidate。这就是为什么您要将user.nickname作为空值。

请参阅http://sailsjs.org/documentation/concepts/models-and-orm/lifecycle-callbacks的文档。

创建的回调 beforeValidate: fn(值,cb) 更新的回调 beforeValidate: fn(valuesToUpdate,cb)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40525151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档