【问题标题】:How to pass a column NULL value from angular to node using mysql如何使用mysql将列NULL值从角度传递到节点
【发布时间】:2018-05-09 10:24:35
【问题描述】:

有时,我需要将一个空值从我的 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',

我该怎么做?

//角度前端控制器

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

//表格定义

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

【问题讨论】:

    标签: mysql angularjs node.js


    【解决方案1】:

    正如文档所说:undefined / null are converted to NULL,不是字符串'null' 或空字符串''。所以修改node server里面的代码。

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

    【讨论】:

      猜你喜欢
      • 2016-10-29
      • 2019-08-18
      • 2018-11-16
      • 1970-01-01
      • 2018-12-03
      • 1970-01-01
      • 2020-10-30
      • 1970-01-01
      • 2017-11-24
      相关资源
      最近更新 更多