如何解决如何在没有破折号的情况下在 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 举报,一经查实,本站将立刻删除。