javascript - 使用 pg-promise 插入 UUID
问题描述
我正在开发一个新服务器,并且我试图让客户拥有一个 UUID 标识符。我希望能够从 Web 界面推送客户名称、母公司和内部 ID,但 uuid 应该在服务器端生成。如何将 UUID 插入数据库?uuid 应放入表中的 ID 中。
当前的设置是这样我可以用 curl 发送 ID 并对其进行全部测试。代码之前所做的是从终端获取每个值。我正在尝试修改此工作代码,以便在创建新客户时可以将他们的姓名、父级、symID 并在 ID 列中生成一个 uuid。
对于 symID,我还想从我目前无权访问的 ID 数据库中提取它。我不知道这个功能是否会实现,所以现在它只是手动输入或根本不输入。
我正在使用 pg-promise 写入 postgres 数据库,也使用 express 和 bluebird。
//Database setup
...
CREATE TABLE customer(
customer_name VARCHAR,
ID varchar PRIMARY KEY,
parent VARCHAR,
symID VARCHAR
);
...
//code to create new user
...
function createUser(req, res, next) {
const user_id = uuidv4();
//need to fix id. currently it is user entered and not a uuidv4
db.none('insert into customer values(${customer_name}, ${ID}, ${parent}, ${symID})',
req.body)
.then(function () {
res.status(200)
.json({
status: 'success',
message: 'Inserted one customer'
});
})
.catch(function (err) {
return next(err);
});
}
...
解决方案
您可以通过对表定义进行微小更改来自动生成 UUID:
如果尚未安装,则需要扩展 pgcrypto。
CREATE EXTENSION pgcrypto; -- if needed
CREATE TABLE customer(
customer_name VARCHAR,
ID uuid default gen_random_uuid() PRIMARY KEY,
parent VARCHAR,
symID VARCHAR
);
这将生成一个 type4 uuid。取回它的价值类似于获得由序列/序列创建的 PK(我认为是在列表中)。
推荐阅读
- android - Security ProviderInstaller 替代没有 Play 服务的设备
- ruby-on-rails - select2 gem 在搜索后记住选择的选项
- javascript - 从 Typescript 中的 JSON 数组中删除索引
- elasticsearch - 在 ElasticSearch 中查找两个文档的数组字段的共同值
- c# - EF Core 枚举列表
- apache-zookeeper - CachedModeledFramework 初始化时如何通知
- opentext - OpenText Content Server how to get folder ID with path using REST API?
- date - 在 Vega-Lite 中为日期添加日期
- ios - 为什么 SwiftUI 的 macOS 上的 EKCalendarChooser 中没有显示 Google 日历
- python - PyQT QThread 遵循线程执行顺序(等待)