我们可以在Create()回调之后/之前改变属性的值吗?
Can we change the value of attribute on after/before Create() callback in sails?
我有一个场景,我必须用它的id填充模型的属性。对于如. .在用户模型中:
module.exports = {
attributes: {
activation_link: "string"
},
afterCreate: function(value, cb) {
value.activation_link = "localhost:1337/user/action/"+ value.id;
cb();
}
activation_link的修改值也必须保存在数据库中。如何实现这一目标?
根据这个和这个你的代码应该实际工作:你在afterCreate
中的操作应该改变结果对象。
嗯…似乎第一个参数不是水线对象,尽管文档说。从技术上讲,您可以通过id从DB重新获取记录,更新和保存,而不会产生很多开销(因为它应该只在创建时调用一次)。但是我真的会避免在数据库中放入一个依赖于记录id的字段:这样的数据库变得不可移植,因为您不能保证记录将具有相同的id。因此,解决方案是为这些激活链接使用一些令牌(干净的方式),或者只是使activation_link
成为一个函数,而不将其放在DB中(简单的方式):
module.exports = {
attributes: {
},
activation_link: function() {
if (!this.id)
return false;
return 'localhost:1337/user/action/' + this.id;
}
}
afterCreate
到beforeCreate
的变化(sails -v 0.12.14)
beforeCreate: function (attrs, cb) {
attrs.createdAt = moment().format()
attrs.updatedAt = attrs.createdAt
return cb();
},
beforeUpdate: function (attrs, cb) {
attrs.updatedAt = moment().format()
return cb();
}
文档在这里官方风帆模型生命周期
相关文章:
- 可以't改变'name'元素的属性
- 输入字段值属性不会改变,除非type=“”;隐藏”;
- 切换一个Div与按钮改变左边距属性
- Pop Window的属性在Javascript中没有改变
- 为什么可以't改变图像's src属性
- 烬路线可以改变属性吗?
- JQuery移动改变属性的每个选项在多个选择使用JavaScript
- 当鼠标悬停带有动画时改变属性
- CSS根据Javascript条件改变属性
- 不能改变属性
- Html上点击改变属性;重新单击回到原始状态
- 试着改变'属性
- 我们可以在Create()回调之后/之前改变属性的值吗?
- 使用Kefir用多个事件改变属性的惯用方法
- jQuery data()在动态改变属性时的潜在Bug
- 如何定义自定义的angularjs指令,只改变属性,而不是(替换/附加)整个HTML标签
- 顺序主干模型.设置覆盖模型.改变属性
- 骨干& # 39;改变:属性# 39;有时不捆绑
- Fabric.js对象在通过编程方式改变属性后消失
- Mouseenter内部函数不改变属性