我正在尝试将数字“2”连接到一行中有时可能为null
的值。其他时候,它将是一个字符串。我正在使用Sequelize.fn方法来连接'2',但是在值为null的情况下,它不会执行任何操作。具体来说,它仍然是空的,并没有像我预期的那样变成'2'。如果该值不为null,而是一个字符串,则它可以工作。我通过检查数据库本身的结果值来确认这一点。还有另一种方法可以使用Sequelize连接到空值吗?
这是尝试连接到null的代码,简化:
mysql.determineDatabase('db-name', 'table-name').then((database) => {
database.sequelize.sync().then(() => {
database.table_name.update({
code: Sequelize.fn('concat', Sequelize.col('code'), 2)
}, { where: { code: req.body.code }
}).then((result) => {
res.status(200).send({ ... });
}).catch((error) => {
res.status(400).send(error);
});
});
});
答案 0 :(得分:0)
万一有人偶然发现这个问题并需要答案,我最终会这样做而不是尝试使用sql函数:
mysql.determineDatabase('db-name', 'table-name').then((database) => {
database.sequelize.sync().then(() => {
database.table_name.findAll({ where: { code: req.body.code } })
.then((response) => {
const code = response[0].dataValues.code;
const concatenatedCode = code === null ? 2 : `${code}2`;
database.table_name.update({
code: concatenatedCode
}, { where: { code: req.body.code }
}).then((result) => {
res.status(200).send({ ... });
}).catch((error) => {
res.status(400).send(error);
});
});
});
});
基本上,我只是通过.findAll()
获取之前的值。如果返回的值是null
,我将其替换为2,否则,我将结束2.