【问题标题】:In azure logic App how to create a 10 integer digit unique id在 azure logic App 中如何创建一个 10 位整数的唯一 ID
【发布时间】:2018-05-10 09:16:15
【问题描述】:

在 azure logic App 中如何为每个请求创建一个 10 位的唯一 ID。目前,我正在使用 Function Javascript,但它正在创建重复项。

JAVAscript 函数是:

a=1000000000;

module.exports = function (context, req) {
    context.log('JavaScript HTTP trigger function processed a request.');
    a=a+1;
    if (true) {
        context.res = {
            // status: 200, /* Defaults to 200 */
            body: a
        };
    }
    else {
        context.res = {
            status: 400,
            body: "Please pass a name on the query string or in the request body"
        };
    }
    context.done();
};

如何解决这个问题

【问题讨论】:

  • 有一个guid()函数docs.microsoft.com/en-us/azure/logic-apps/…,但它不是10位的uid。
  • 是的,我先用了那个,然后我换了,因为它太长了
  • 如何使用a = Math.floor(Math.random()*9000000000) + 1000000000 创建一个随机的 10 位整数。虽然可以复制,但机会微乎其微
  • @VikramAS 你是什么意思太长了?很难生成唯一标识符。否则,如果您不想重复,请将增量存储在文件/数据库中。
  • 是的,我知道,但我想要整数,因为在后端系统中他们已经将 id 定义为整数,所以在集成时这是我面临的问题

标签: azure azure-functions azure-logic-apps uniqueidentifier


【解决方案1】:
  1. 正确的方法是使用 @Thomas 推荐的 guid 之类的东西,但听起来它必须与您的后端人员单独对话。
  2. 另一种方法是使用rand() 定义某种公式以及加盐方法,以真正尝试最大程度地减少重复的机会。
  3. 我认为更适合您的场景的第三种方法是使用 unix timestamp,它会为您提供 10 位唯一整数,以秒为单位递增。

也许,您可以使用 #3 并将其与 #2 一起加盐以最大限度地减少任何重复,以便 uniqueness 更具时间限制。

【讨论】:

  • 感谢您的回答,我已经用时间戳方法实现了,是的,问题在于秒的增量。
【解决方案2】:

您可以只访问逻辑应用请求的数字运行标识符,该标识符在每个请求中都是唯一的,并且可用于您的逻辑应用请求上下文。它是一个相当长的数字字符串(超过 10 位)。但是,由于它是数字,您可以重新编码并缩短它。

通过以下方式访问运行标识符:@workflow()['run']['name']

例如如果运行标识符是 08586676754160363885,当压缩为 base 64 时,它将是 Y29tcHJlc3M=(这是 12 个字符)

如果您需要将其压缩为 10 个字符,您可以将其压缩为 base 72 或更多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-05
    • 2023-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多