Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Sequelize中禁用直接设置程序_Javascript_Node.js_Sequelize.js - Fatal编程技术网

Javascript 在Sequelize中禁用直接设置程序

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

我希望在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) { 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)