我正在使用PostgreSQL和续集。我有一个模型列“ checkedAt”,用于存储多个日期。我希望能够比较列数据中的不同日期。
此问题是日期不是字符串,而是JSON数据类型,因此日期存储为字符串。
这是我定义模型的方式
typedef int (*functionPointer) (int ); //this sometimes is typedef int
typedef float (*functionPointer) (int ); //or typedef float
//can i "guess" the return type at runtime?
void *handle = dlopen(userLib.so, RTLD_LAZY);
functionPointer func = (functionPointer) dlsym(handle, "foo");
func(2);
我如何尝试查询不成功
const Notification = sequelize.define("Notification", {
checkedAt: {
type: DataTypes.JSON,
defaultValue: {
bySomeJob: new Date(),
bySomeOtherJob: new Date()
}
}
});
我以前曾将此方法用于整数和布尔值,但没有日期。
我发现此功能可以将字符串转换为日期格式
const someDate = new Date();
await db.Notification.findAll({
where: {
checkedAt: {
bySomeJob: {
$lte: someDate
}
}
}
});
但不确定是否以及如何将其用于列的属性。
我希望能够通过将Date对象与JSON对象列的属性中的转换值进行比较来查询模型。
答案 0 :(得分:0)
如果需要将多个日期与一个通知相关联,那么最好创建一个专门用于存储checkedAt
日期的新模型,并在通知和checkedAt日期之间创建关联。像Notification.hasMany(Dates);
这样,当您查询通知时,可以包括Dates
表,然后具体说明要从该表中包括什么日期,例如使用$lte
,这正是您要尝试的。
可能看起来像这样
await db.Notification.findAll({
include: [
{
model: db.Date,
where: {
checkedAt: {
bySomeJob: {
$lte: someDate
}
}
}
}
]
});