如何使用mysql将列的NULL值从角度传递给节点

问题描述:

有时,我需要将角度前端应用的空值传递给我的后端(节点+ mysql)。我的列表内容可以是NULL。我试图使用:NULL,'NULL'或空(''),但在所有情况下,我有一个在服务器端的异常,因为mysql抛出一个无效的列值。 错误是:如何使用mysql将列的NULL值从角度传递给节点

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

我怎么能这样做呢?

//角前端控制器

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) 
     } 
} 

//节点服务器

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 
    } 
}); 

//表DEF

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

作为文档说:undefined/null are converted to NULL,不像串'null'或空字符串''。所以更改node server内部的代码。

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