skip update columns with pg-promise

前端 未结 3 1367
余生分开走
余生分开走 2020-12-21 12:38

I\'ve got an API up on node using pg-promise for Postgres, this works well but i\'m thinking about how to modify the PUT statement to handle NULLS in the input a little bett

3条回答
  •  感动是毒
    2020-12-21 13:14

    Alternative solution:

    function updateFoo(req, res){ 
        let {name, email, password} = req.body; 
        // Ex: req.body = { name: 'foo', password: 'bar' }
        let data = { name, email, password }; // {name: 'foo', email:undefined, password:'bar}
        //Remove ONLY undefined keys from data
        Object.keys(data).forEach( key => { if(data[key] === undefined) delete data[key] });
    
        let query = 'UPDATE foo SET';
    
        let i = 1;
        Object.keys(data).forEach( key => { query += ` ${key}=$${index},`; i++; })
        query = query.slice(0, -1) // Remove exceeding comma
        query += ` WHERE id=$${i}`;
    
        let values = Object.values(data); // ['foo', 'bar']
        values.push(req.params.id);
    
        // .....
        // query = 'UPDATE foo SET  name=$1, password=$2 WHERE id=$3'
        // values = ['foo', 'bar', req.params.id]
    

提交回复
热议问题