在订单类中,我们有UUID和其他字段:
export class Order extends BaseEntity {
@Field()
@PrimaryGeneratedColumn("uuid")
id: string;
// other fields ...
}
解析器可以是这样的:
@Query(() => Order)
async getNextOrder(
@Arg("data")
{ orderId }: GetNextOrderInput,
) {
return await Order.findOne(id:MoreThan(orderId);
}
我知道它不起作用,那么如何实现下一个项目呢?UUID 是否基于时间并且可以用作索引?
我偶然发现了同样的问题。我正在使用 postgres,我想使用 UUID 作为我的主键,但我希望它们不是完全随机的。
除了实用方面,我发现这篇文章提到了完全随机的UUID密钥会如何影响数据库存储。
为了让TypeORM使用uuid_generate_v1mc而不是UUIDv4生成PK,我在我的迁移中添加了默认值:'uuid_generate_v1mc()'
:
await queryRunner.createTable(
new Table({
name: 'tags',
columns: [
{
name: 'id',
type: 'uuid',
isPrimary: true,
isGenerated: true,
generationStrategy: 'uuid',
default: 'uuid_generate_v1mc()',
}
],
// the rest of my table definition
这使得表的创建如下所示:
CREATE TABLE "tags" (
"id" uuid NOT NULL DEFAULT uuid_generate_v1mc(),
-- rest of my table definition
正如我发现的那样,@PrimaryGeneratedColumn(“uuid”)
使用完全随机的 UUID v4,而 v1
是基于时间的,如此处所述,因此没有机会在 UUID v4
的基础上排序。@Generated(“增量”)
装饰器是文档中提到的另一种选择,但我犯了错误,看起来 Postgres 需要“增量”
作为主键。所以我更喜欢使用 createdAt(类型为日期)列进行排序和 LEAD 来获取下一个订单的 ID:
PREPARE findNextId(uuid) AS(
WITH producedNextIds AS(
WITH ordersOfStore AS (
SELECT
"order"."id", "order"."createdAt"
From
"order"
INNER JOIN "site" ON "order"."storeId" = "site"."id"
)
SELECT "id" , "createdAt",
LEAD("id",1) OVER (
ORDER BY "createdAt"
) next_id
FROM
ordersOfStore
)
SELECT
"id" , "createdAt", next_id
FROM producedNextIds
WHERE
"id" = ($1)
);
EXECUTE findNextId('cb5c5bf0-f781-46e1-9ae1-68c875bb3a56');
任何更好的解决方案都将不胜感激!
如何在TypeORM中使用getter和setter。 我在这里和这里都看到了问题,但没有找到答案 例如,离开我的用户实体 我使用的是类型ORM版本 0.2.7
问题内容: 如何使用JavaScript获取HTML中的下一个元素? 假设我有3个s,并且在JavaScript代码中获得了对1的引用,我想获取哪个是下一个,哪个是前一个。 问题答案: 在纯JavaScript中,我的想法是,您首先必须将它们归类到一个集合中。 因此,基本上,通过selectionDiv遍历集合以查找其索引,然后显然是-1 =上一个+1 =下一个在范围内 但是请注意,正如我所说的那
我创建了一个类,它有一个名为cards的面板,其布局是CardLAyout。我添加了卡片项目。在这个类中,我想通过调用layout来创建一个单独的方法,该方法将切换到下一张卡片。 } 正如你所看到的,我在卡片上添加了其他类的面板。我想做的是创建getNextCard()方法,该方法将当前活动的面板作为其参数。当我调用此功能时,它应该将当前活动的面板切换到我的CardLayout列表中的下一个面板。
假设我们有一组对象,比如: 我想迭代遍历水果,并每次告诉当前、上一个和下一个水果的名称。我会这样做: 但显然它不适用于下一个和上一个项目…有什么想法吗? 请注意,我不想使用经典for循环 (对于i=0;i 非常感谢!
问题内容: 假设我有ID为3、4、7、9的记录,并且我希望能够通过下一个/上一个链接导航到另一个。问题是,我不知道如何获取具有最近的较高ID的记录。 因此,当我有一个ID为4的记录时,我需要能够获取下一个现有记录,即7。查询可能看起来像 如何获取下一个/上一个记录而不获取整个结果集并手动进行迭代? 我正在使用MySQL 5。 问题答案: 下一个: 以前:
问题内容: 说我有 ID的* 记录 * 我希望能够通过下一个/上一个链接导航到另一个。 问题是,我不知道 如何获取具有最近的较高ID的记录 。 因此,当我有一个 ID为ID 的记录时,我需要能够提取下一个现有记录,即为。 该查询可能看起来像 如何获取下一个/上一个记录而不获取整个结果集并手动迭代? 我正在使用MySQL 5。 问题答案: 下一个: 以前的: