Javascript 在Sequelize中禁用直接设置程序
我希望在Sequelize模型中有一些字段是不可设置的,但它们的值是计算出来的 我在其他setter中使用Javascript 在Sequelize中禁用直接设置程序,javascript,node.js,sequelize.js,Javascript,Node.js,Sequelize.js,我希望在Sequelize模型中有一些字段是不可设置的,但它们的值是计算出来的 我在其他setter中使用setDataValue(key,value)来设置这些字段的值 但是,它们的值是在我执行setDataValue之后设置的 我当前的解决方案是使用setter设置值: // I know the value was set before and I just want to make sure it remains the same foo: { ..., set (d, k) { thi
setDataValue(key,value)
来设置这些字段的值
但是,它们的值是在我执行setDataValue
之后设置的
我当前的解决方案是使用setter设置值:
// I know the value was set before and I just want to make sure it remains the same
foo: { ..., set (d, k) { this.setDataValue(k, this.getDataValue(k)) }
有更好的替代方案吗?也许是某种选择
我确实想在数据库中存储这些值。使用
VIRTUAL
类型没有太大帮助。不能使用挂钩。在使用钩子创建或更新并重置字段之前,您不必再次调用setteryourself@Shivam出于某种原因,钩子对我根本不起作用(在另一个上下文中)。我发现使用钩子解决这个问题比我现在的解决方案更复杂,尽管。。。我想知道是否有像freeze
之类的选项,不允许执行obj.foo=42
,但允许setDataValue(“foo”,42)
。你不能使用钩子吗。在使用钩子创建或更新并重置字段之前,您不必再次调用setteryourself@Shivam出于某种原因,钩子对我根本不起作用(在另一个上下文中)。我发现使用钩子解决这个问题比我现在的解决方案更复杂,尽管。。。我想知道是否有像freeze
这样的选项或任何不允许执行obj.foo=42
但允许setDataValue(“foo”,42)
。