Sequelize -在where条件中关联表列
我想在序列模型中执行这个查询:
SELECT * FROM `model_game` AS `Game` INNER JOIN `model_activity` AS `Activity` ON `Game`.`ActivityId` = `Activity`.`id` WHERE `Game`.`startAt` > ('2017-03-25 07:37:36'-`Activity.duration`) AND `Game`.`status` = 'NotStarted';
我尝试使用sequelize.col()函数,但仍然无法计算值。我的代码如下
My Game model . table name model_game
var Game = sequelize.define("Game", {
startAt: DataTypes.DATE,
status: DataTypes.ENUM('NotStarted','Completed')
}, {
classMethods: {
associate: function(models) {
Activity.belongsTo(models.Activity);
}
}
});
我的活动模型,表名model_activity
var Activity = sequelize.define("Activity", {
title: DataTypes.STRING,
duration: DataTypes.INTEGER
},{
classMethods: {
associate: function(models) {
Activity.hasMany(models.Game);
}
}
});
FindQuery现在返回值,但sequelize.col(“Activity.duration”)没有任何作用
var currentTime = moment();
models.Game.findAndCountAll({
where: { status: 'NotStarted',
startAt: {gt: currentTime.subtract(moment.duration(sequelize.col("Activity.duration"), 'minutes'))},
},
include: [{
model: models.Activity
}]
}).then(function(result) {
//Success
});
但上面的代码没有填充“Activity.duration”持续时间值。没有错误,应该做些什么来纠正这一点。提前感谢
可以尝试使用DATE_SUB()
函数结合sequelize.literal
。
models.Game.findAndCountAll({
where: {
status: 'NotStarted',
startAt: {
$gt: models.sequelize.fn(
'DATE_SUB',
models.sequelize.literal('NOW()'),
models.sequelize.literal('INTERVAL Activity.duration MINUTE')
)
}
},
include: [models.Activity]
}).then(result => {
// result...
});
上述代码将生成类似于以下查询的查询:
SELECT * FROM games INNER JOIN activities
ON games.activityId = activities.id
WHERE games.status = 'NotStarted'
AND games.startAt > DATE_SUB(NOW(), INTERVAL activities.duration MINUTE);
根据您的代码和要获取的查询,我已使用 NOW()
作为要从中减去 Activity.duration
字段的日期。此外,我使用了 MINUTE
间隔,但您可以根据 Activity.duration
字段表示的内容(小时、分钟、秒等)对其进行更改。
本文向大家介绍Prolog关联列表,包括了Prolog关联列表的使用技巧和注意事项,需要的朋友参考一下 示例 在所有严肃的Prolog系统中,关联列表可提供比线性访问元素集合更快的速度。这些关联列表通常基于平衡树,例如AVL树。有一个称为的公共领域库library(assoc),它随许多Prolog系统一起提供,并提供O(log(N))操作,用于向集合中插入,获取和更改元素。
问题内容: 我有一张只包含产品ID和类别ID的表(产品可以在多个类别中)。如何将类别ID展平到产品列中,所以我以此结束: 就像我需要循环到类别列的单独表中一样。我该怎么办?或者有更好的方法吗? 问题答案: 在MSSQL中没有内置的方法可以做到这一点。 在Microsoft SQL Server 2005中模拟group_concat MySQL函数? 很好地描述了如何实施变通办法。
问题内容: 我在Web API项目中使用了Dictionary,该项目的序列化方式类似于JSON: 因为我有重复的键,所以我不能再使用Dictionary类型,而现在我正在使用 但这是以这种方式序列化的: 有没有办法像字典一样进行序列化? 谢谢。 问题答案: 如果您使用Newtonsoft Json.NET库,则可以执行以下操作。 定义一个转换器,以所需的方式写入键/值对的列表: 然后使用转换器:
问题内容: 现在我想知道你们是否可以帮助我将ArrayList序列化到文件上。现在我正在从学校进行总结,但是我没有真正的编码问题。我正在制作的是GUI通讯录,当用户添加地址时,它会存储到arraylist中并添加到comboBox中。那就是我在做什么。我要问的是您是否可以序列化Arraylist。如果可以的话,你们能教我怎么做吗?或者至少给我一些教程? 非常感谢。如果你们需要在回答之前先看代码,请
问题内容: 我想深入克隆一个列表。为此,我们有一种方法 所以现在要克隆我的列表,我应该先将其转换为可序列化的。是否可以将列表转换为可序列化列表? 问题答案: 已实施的所有标准实施。 因此,即使它本身不是的子类型,也可以安全地将列表强制转换为,只要您知道它是诸如或的标准实现之一。 如果不确定,请先复制列表(使用),然后知道它是可序列化的。