【问题标题】:getting data from the database escaping slash using knex使用 knex 从数据库中获取数据转义斜线
【发布时间】:2019-04-19 04:14:08
【问题描述】:

我用来从数据库 Knex 中获取数据。接收数据时 knex 转义 slash。

返回这个:

{"selector":"a[class=\\"xf-product-title__link js-product__title\\"]","site":"https:\\/\\/www.goo.com\\/catalog\\/kartinki\\/nasha/"}

需要:

{"selector":"a[class=\"xf-product-title__link js-product__title\"]","site":"https://www.goo.com/catalog/kartinki/nasha/"}

如何解决这个问题?

我的代码:

let result = new Promise(function (getRes,getErr) {
            knex.from('configs')
            .select('*')
            .where({id:id_config})
                .then((ans) => {
                    getRes(ans);
                }).catch((err) => { getErr(err) })
                .finally(() => {
                    knex.destroy();
                });
        });

        return await result;

【问题讨论】:

    标签: node.js json knex.js


    【解决方案1】:

    您正在混淆 javascript 字符串文字表示和实际 javascript 对象数据和 JSON 字符串格式数据:

    // store some jsonb data from DB to variable result
    > result = null; knex.select(knex.raw(`'{"selector":"a[class=\\"xf-product-title__link js-product__title\\"]","site":"https://www.goo.com/catalog/kartinki/nasha/"}'::jsonb`)).then(res => result = res)
    
    // data was returned from DB as javascript object
    > result
    [ { jsonb:
         { site: 'https://www.goo.com/catalog/kartinki/nasha/',
           selector: 'a[class="xf-product-title__link js-product__title"]' } } ]
    
    // stringifying data to JSON string requires that " marks are escaped 
    // but in javascript string literals \ escape mark shows as \\ because
    // otherwise those could be mixed with \t or \n etc.   
    > JSON.stringify(result)
    '[{"jsonb":{"site":"https://www.goo.com/catalog/kartinki/nasha/","selector":"a[class=\\"xf-product-title__link js-product__title\\"]"}}]'
    
    // however when javascript string literal is printed to console or written
    // to file, those \\ marks are outputted as single backslashes
    > console.log(JSON.stringify(result))
    [{"jsonb":{"site":"https://www.goo.com/catalog/kartinki/nasha/","selector":"a[class=\"xf-product-title__link js-product__title\"]"}}]
    

    【讨论】:

      猜你喜欢
      • 2017-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 2012-12-14
      • 2012-03-04
      相关资源
      最近更新 更多