MikroORM:如何按日或按月而不是完整日期查询日期 属性?

MikroORM: How to query a date property by the day or month and not the full date?

我有一个日期为 属性

的实体
@Entity()
export class Foo {
    // ...other properties

    @Property({ type: DateType })
    date = new Date()
}

我想进行查询以查找特定日期的所有 Foo

例如

async getByDate(someDate: Date) {
    const foo = await this.repository.find({
        // What should go to get Foo from the same day as `someDate` ?
    })
}

我在文档中找不到如何操作。

我也想做一些事情,比如“从某个星期找到 Foo”或“从某个月找到 Foo

如果使用 DateType,则将其映射到 Date 对象,因此您应该按 Date 对象进行查询。 Date 对象的时间部分将被截断 - 这发生在 DateType 中,所以请随时检查它的源代码,它非常直截了当。

const users = await em.find(User, { date: new Date('2020-05-20') });

https://github.com/mikro-orm/mikro-orm/blob/master/packages/core/src/types/DateType.ts

从实现中你也可以看出,其实它也支持字符串查询,所以这样也行:

const users = await em.find(User, { date: '2021-04-20' });

要过滤整周,您需要先找到一周的开始和结束(会为您保留),并使用 $gte$lt 运算符的组合:

const users = await em.find(User, {
  date: {
    $gte: new Date('2021-04-19'), 
    $lt: new Date('2021-04-25'),
  },
});


// or with strings

const users = await em.find(User, {
  date: {
    $gte: '2021-04-19',
    $lt: '2021-04-25',
  },
});