首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用pg-promise插入UUID

使用pg-promise插入UUID
EN

Stack Overflow用户
提问于 2019-07-01 22:03:26
回答 1查看 257关注 0票数 0

我正在开发一个新的服务器,我试图让一个客户有一个UUID标识符。我希望能够从web界面推送客户名称,母公司和内部id,但uuid应该是服务器端生成的。如何将UUID插入数据库?应该将uuid放入表中的ID中。

当前的设置是这样的,所以我可以用curl发送ID,并对其进行测试。代码之前所做的是从终端获取每个值。我正在尝试修改这个工作代码,以便当我创建一个新客户时,我可以把他们的名字、parent、symID和一个uuid生成到ID列。

对于symID,我还想从我目前没有权限访问的ID数据库中拉出它。我不知道这个功能是否会实现,所以目前它要么手动输入,要么根本不输入。

我正在使用pg-promise来写入postgres数据库,也使用express和bluebird。

代码语言:javascript
复制
//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);
  });
}
...
EN

回答 1

Stack Overflow用户

发布于 2019-07-02 08:40:42

只需对表定义稍作更改,即可自动生成UUID:

如果尚未安装,则需要扩展名pgcrypto。

代码语言:javascript
复制
    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。取回它的值将类似于获得由sequence/serial创建的PK (在列表中我认为是这样)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56837067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档