从TypeORM mySQL检索到的包含双空格的字符串不是纯文本

bybem2ql  于 2023-02-03  发布在  Mysql
关注(0)|答案(1)|浏览(113)
    • bounty将在4天后过期**。回答此问题可获得+50声望奖励。jiuwo希望引起更多人关注此问题。

当我从typeORM检索对象时(mysql),如果对象的字符串字段值包含双空格,它将不会作为两个纯空格返回,而是一个符号和一个空格。因此,当我将检索到的值用于javascript属性访问器时,输出变为未定义。我的用例也需要符号(utf-8).这里的错误是什么,我如何才能正确地检索带有两个空格的值?

const field_name_obj = {
  field_name : "some  name" // two normal spaces, no symbols.
}

const obj = {
  "some  name" : "value"
}

// typeORM.save(field_name_obj);
const get = typeORM.find(field_name_obj)

console.log(get.field_name) // "some  name"
console.log(obj[get.field_name])   // undefined
console.log(obj[field_name_obj.field_name]) // "value"
console.log(obj["some  name"]) // "value"

在上面的示例中,如果"some name"改为"some name",则obj[get.field_name]将返回预期的"value"
表格详情:

Engine: InnoDB
Table collation: utf8mb4_unicode_ci
d6kp6zgx

d6kp6zgx1#

我也相信这是一个TypeORM问题,正如里克·詹姆斯所说。
打开一个bug报告here,现在,您可以像这样缓解这个问题:

get = JSON.parse(JSON.stringify(get).replaceAll('<symbol>','<space>'))

最后,请不要在对象键中使用空格:)

相关问题