TypeORM find/findOne 选项(查找最新的一个实体)

yun*_*ori 9 express typescript typeorm

现在我使用 Typecript、Express.js、TypeORM

我想使用 Repository.find(或 Repository.findOne)在符合条件的实体中查找最新的一个实体。

这是我的实体


import {
    Entity,
    CreateDateColumn,
    UpdateDateColumn,
    PrimaryGeneratedColumn,
    Column,
    BaseEntity,
    ManyToOne,
} from "typeorm";

import { User } from "./user";
import { Product } from "./product";


@Entity()
export class Transaction extends BaseEntity {
    @PrimaryGeneratedColumn('increment', { type: "int" })
    id: number;

    @Column()
    user_id: number;

    @Column()
    product_id: number;

    @Column({
        type: "enum",
        enum: PaymentMethod,
        default: PaymentMethod.EL
    })
    paymentMethod: PaymentMethod;

    @Column()
    paymentValue: number;

    @Column()
    totalValue: number;

    @CreateDateColumn({ type: 'timestamp' })
    createdAt: Date;

    @UpdateDateColumn({ type: 'timestamp' })
    updatedAt: Date;
}

Run Code Online (Sandbox Code Playgroud)

这是我查找最新的代码(根据createdAt)

let alltransactions = await transactionRepository.find({ where: [ {user_id : ownership.user_id}, {PaymentMethod: ownership.paymentMethod}]});
            
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用查找与条件匹配的所有交易并对它们进行排序(因此我将最新的交易放在第一个)并获取第一个实体...!!

我该如何解决?

Ver*_*333 28

因此,您想要返回与 OR 条件匹配的最后插入的行。(编辑“与”->“或”)

let alltransactions = await transactionRepository.findOne({
    where: [ {user_id : ownership.user_id}, {PaymentMethod: ownership.paymentMethod}],
    order: { id: 'DESC' }
});
Run Code Online (Sandbox Code Playgroud)

  • 这是 OR 条件。 (4认同)