Javascript TypeORM:如何使用UUID获取下一个项目?

Javascript TypeORM:如何使用UUID获取下一个项目?,javascript,arrays,sorting,uuid,typeorm,Javascript,Arrays,Sorting,Uuid,Typeorm,在Order类中,我们有一个UUID和其他字段: export class Order extends BaseEntity { @Field() @PrimaryGeneratedColumn("uuid") id: string; // other fields ... } 分解器可以是这样的: @Query(() => Order) async getNextOrder( @Arg("data") { o

在Order类中,我们有一个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是基于时间的,可以用作索引吗?

正如我发现的
@PrimaryGeneratedColumn(“UUID”)
使用的
UUID v4
是完全随机的,
v1
一个是基于时间的,因此没有机会在
UUID v4
的基础上排序。
@Generated(“increment”)
decorator是中提到的另一个选项 但我犯了错误,看来Postgres需要
“increment”
作为主键。 因此,我更喜欢使用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');
任何更好的解决方案都将不胜感激