【问题标题】:Insert UUID with pg-promise使用 pg-promise 插入 UUID
【发布时间】:2019-11-12 04:37:30
【问题描述】:

我正在开发一个新的服务器,并试图让客户拥有一个 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);
  });
}
...

【问题讨论】:

  • 欢迎来到 StackOverflow。你有问题吗?愿望清单不需要我们提供任何帮助。
  • 我进行了编辑以更清楚地表达我的意思。我不知道如何将 uuid 添加到我需要的字段中。
  • 你也没有确定这个:进入我需要它的字段 - 你的表有customer_name,ID,parent,symID -选一个。另外,${ID} 和 ${parent} 之间没有逗号是否有原因?
  • 之前代码所做的是从终端获取每个值。我正在尝试修改此工作代码,以便在创建新客户时可以输入他们的姓名、父级、symID 并在 ID 列中生成一个 uuid。
  • 用包含这些键和值的对象替换request.body。

标签: javascript postgresql express


【解决方案1】:

您可以自动生成 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(我认为是在列表中)。

【讨论】:

    猜你喜欢
    • 2015-11-23
    • 1970-01-01
    • 2016-07-14
    • 2016-09-15
    • 2021-08-14
    • 2017-06-07
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多