Javascript-我们可以在帆中在Create()回调之后/之前更改属性的值吗?
作者:互联网
我有一种情况,我必须用其ID填充模型的属性.例如
在用户模型中:
module.exports = {
attributes: {
activation_link: "string"
},
afterCreate: function(value, cb) {
value.activation_link = "localhost:1337/user/action/"+ value.id;
cb();
}
Activation_link的修改值也必须保存在数据库中.如何实现?
解决方法:
根据this和this,您的代码应该可以正常工作:afterCreate中的操作应该使结果对象发生突变.
更新
嗯…尽管第一个参数不是what the documentation says,但似乎不是一个Waterline对象.从技术上讲,您可以按id从DB刷新记录,进行更新和保存而没有太多开销(因为在创建时只能调用一次) ).但是我真的要避免在DB中放置一个依赖于记录ID的字段:这样的DB变得不可传输,因为您不能保证记录将具有相同的ID.因此,解决方案是对这些激活链接使用一些令牌(简洁的方式),或者仅使activation_link为函数而不将其放入数据库中(简单的方式):
module.exports = {
attributes: {
},
activation_link: function() {
if (!this.id)
return false;
return 'localhost:1337/user/action/' + this.id;
}
}
标签:node-js,sails-js,javascript,waterline 来源: https://codeday.me/bug/20191121/2053400.html