微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在没有破折号的情况下在 pg-promise 中显示 UUID

如何解决如何在没有破折号的情况下在 pg-promise 中显示 UUID

  • 根据 stackoverflow 问题 HERE postgres 列不存储 UUID 数据类型的破折号
  • 然而,当我使用 pg-promise 加载任何 UUID 列的值时,它总是显示破折号
  • 如何使用 pg-promise 在没有破折号的情况下检索这些 UUID

说明问题的代码示例

var pgPromise = require("pg-promise"),pgp = pgPromise({}),db = pgp({
        database: "mydatabase",host: "localhost",password: "somepass",port: 5432,ssl: false,user: "myuser"
    });
pgp.pg.types.setTypeParser(20,parseInt);
db.query("CREATE TABLE test(myid uuid not null primary key)")
.then((e => {
    var r = require("crypto").createHash("md5").update("test data").digest("hex");
    return db.query("INSERT INTO test(myid) VALUES($1) ON CONFLICT DO nothing",[r])
}))
.then((e => db.query("SELECT * FROM test")))
.then((e => (console.log(e),db.query("DROP TABLE test"))))
.then((() => console.log("test success!")))
.catch((e => console.error(e)));

解决方法

这条线成功了

pgp.pg.types.setTypeParser(pgp.pg.types.builtins.UUID,(val) => {
    val === null ? null : val.replace(/-/g,'')
});

感谢@vitaly-t 和@Bergi 的建议

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。