编程语言
首页 > 编程语言> > Javascript-我们可以在帆中在Create()回调之后/之前更改属性的值吗?

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的修改值也必须保存在数据库中.如何实现?

解决方法:

根据thisthis,您的代码应该可以正常工作: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