gpt4 book ai didi

mysql - 如何使用mysql将列NULL值从 Angular 传递到 Node

转载 作者:行者123 更新时间:2023-11-29 10:30:29 27 4
gpt4 key购买 nike

有时,我需要将一个空值从我的 Angular 前端应用程序传递到我的后端(node+mysql)。我的列表内容可以为NULL。

我尝试使用:NULL、'NULL' 或empty(''),但在所有情况下,我在服务器端都会遇到异常,因为mysql 抛出无效的列值。错误是:

code: 'ER_TRUNCATED_WRONG_VALUE', errno: 1292,
sqlMessage: 'Incorrect datetime value: \'\' for column \'DATE_CHECK\' at row 1',
sqlState: '22007',

我怎样才能做到这一点?

//Angular 前端 Controller

var saveItem=async function(row){
var item={}
try{
item.ID=row.ID;
item.DATE_CHECK=row.DATE_CHECK?moment(row.DATE_CHECK).format('YYYY-MM-DD'):'';
await $http.post('/agenda_staff/' + item.ID, item)
} catch(erro){
console.log(erro)
}
}

//Node 服务器

router.post('/:id',async (req,res,next)=>{  
var input = JSON.parse(JSON.stringify(req.body));
var id = req.params.id;
try {
const connection = await pool.getConnection();
try {
var data = {
ID: input.ID
, DATE_CHECK: input.DATE_CHECK
};

var query=await connection.query("UPDATE AGENDA_STAFF set ? WHERE id = ? ",[data,id])
var ret={success:true, message:'Registro foi atualizado'}
return res.send(ret);
} finally {
pool.releaseConnection(connection);
}
} catch (err) {
if (err instanceof Errors.NotFound)
return res.status(HttpStatus.NOT_FOUND).send({ success:false, message: err.message, results:err.stack }); // 404
console.log(err);
return res.status(HttpStatus.INTERNAL_SERVER_ERROR).send({ success:false,message: err.message, results:err.stack }); // 500
}
});

//表定义

CREATE TABLE AGENDA_STAFF (
ID BIGINT AUTO_INCREMENT NOT NULL
, DATE_CHECK TIMESTAMP
,CONSTRAINT PK_STAFF
PRIMARY KEY ( ID )
)ENGINE=INNODB;

最佳答案

正如文档所说:undefined/null 被转换为 NULL,而不是字符串 'null' 或空字符串 ''。因此更改 Node 服务器内的代码。

var data = {
ID: input.ID,
DATE_CHECK: input.DATE_CHECK === '' ? null : input.DATE_CHECK
};

关于mysql - 如何使用mysql将列NULL值从 Angular 传递到 Node ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47489621/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com