我正在尝试更新一个sequelize模型的一部分,它包含一个用分号分隔的字符串数组值。
languages: {
type: Sequelize.STRING,
allowNull: false,
get() {
if (this.getDataValue('languages') === null) {
return [];
} else {
return this.getDataValue('languages').split(';');
}
},
set(val) {
if (val.length === 0) {
this.setDataValue('languages', null);
} else {
this.setDataValue('languages', val.join(';'));
}
},
},
3条答案
按热度按时间ppcbkaq51#
我找到了一个解决方案。在更新值之前,它读取当前值,当它在数据库中为空时,它给出未定义。通过增强if检查,它解决了这个问题。
mrwjdhj32#
简短回答
最好检查变量是
null
还是undefined
,记住两个值是不同的。null
表示没有任何内容,赋值为null,而undefined
表示声明了一个变量,但没有赋值给它。你可以这么做
长长的回答
如果你想拦截所有的请求并替换值,例如:如果它是一个可以为空的列表,我想显示
[]
,如果它是一个可以为空的布尔值,我想显示false
。您可能希望使用中间件来实现这一点。
它将类似于下面的代码:
xtfmy6hx3#
正在使用未初始化的模型。enter link description here