nodejs传的值到前端后数据发生改变

大锅们,球解答!
碰到个问题,我数据库表中的一个字段数据类型为tinyint,前端正常传值过去,true为1,false为0,当前端请求,nodejs获取到数据的时候将这个1和2又转成了true和false,但是这个时候,数据到了前端后,true又变成了false是怎么回事啊

该回答引用NewBing

你好,根据你的描述,我猜测你的问题可能是由于前端传递的true和false被转换成了字符串类型,而后端在接收到这些字符串时将它们转换回了布尔类型。这种情况下,如果你使用的是MySQL数据库,那么你可以在查询时使用CAST函数将tinyint类型转换为布尔类型。例如:

SELECT CAST(your_tinyint_column AS BOOLEAN) FROM your_table;

如果你使用Sequelize作为ORM,那么你可以在模型定义中将tinyint类型映射为布尔类型。例如:

const YourModel = sequelize.define('your_model', {
  your_tinyint_column: {
    type: DataTypes.BOOLEAN,
    defaultValue: false,
    allowNull: false,
  },
});

希望这些信息能够帮助到你。如果你有任何其他问题,请随时问我。

源: 与必应的对话, 2023/4/19

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    对于这个问题,可能由于前端传递的true和false是字符串类型,而在nodejs中,默认情况下会将字符串类型的"1"和"0"转化为布尔类型的true和false,进而导致传输到前端后,又被转换回来,出现了问题。解决方案可以尝试将接收到的数据进行强制类型转换,将接收到的布尔类型的true和false转化为数字类型的1和0,或者直接使用三元表达式进行转换:

    //强制类型转换
    let result = Number(req.body.key) //或者 parseInt(req.body.key)
    //三元表达式
    let result = req.body.key === "true" ? 1 : 0
    

    需要按照实际情况选择合适的转换方法。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^