Sequelize:如何找到 Max 元素

Posted

技术标签:

【中文标题】Sequelize:如何找到 Max 元素【英文标题】:Sequelize: how to find a Max element 【发布时间】:2014-06-23 23:09:50 【问题描述】:

我在形成 sequelize 查询时遇到问题:

我的本​​机查询是一些东西。

       SELECT max(id),vehicleID FROM `vehicles` WHERE `vehicles`.`vsr_id`=342;

为此,我正在尝试构建类似这样的代码。

    Vehicle.find( where:  'vsr_id': 342 , order : [sequelize.fn('max', sequelize.col('id'))] ).success(function(vehicles)
       console.log("Something i got" + vehicles)
        )

它抛出一个错误:sequelize Object [object Object] has no method 'col' 我从这个网址引用: http://sequelizejs.com/docs/latest/models#block-34-line-8

我的任何代码缺失。请帮帮我

仅供参考:忽略分号

【问题讨论】:

Vehicle.find( where: 'vsr_id': vsr_vehicle.vsr_id , 属性: ['id', 'vehicleID'],'order': 'id DESC' ).success(功能(车辆) console.log(“我得到的东西”+车辆)) 【参考方案1】:

尝试使用:

Vehicle.findAll(
        attributes: [Sequelize.fn('max', Sequelize.col('id'))],
        raw: true,
    )

查看here了解更多信息。

【讨论】:

请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常更有帮助,质量更高,更有可能吸引投票。【参考方案2】:

使用 sequelize.col 引用该列,sequelize 不会添加“'”,这导致了这里的问题。

【讨论】:

【参考方案3】:

你可以试试,

Vehicle.max('id', where : 'vsr_id': 342 )
.success(function(vehicle_id)
   ...
)
.error(function(error)
   ...
);

【讨论】:

该函数不返回vehicle,而是返回该车辆的id【参考方案4】:

该查询应该可以通过:

Vehicle.findAll(
  attributes: [
     sequelize.fn('MAX', sequelize.col('id'))
  ],
  where: 
     'vsr_id': 342 
  
);

【讨论】:

您应该更新属性以添加别名[sequelize.fn('MAX', sequelize.col('id')), "id"]【参考方案5】:
 Rate.findAll(
    where:productId:pid,
    attributes:[[sequelize.fn('max', sequelize.col('rating')),'max']]
)

【讨论】:

来自审核队列:我可以请求您在源代码周围添加一些上下文。仅代码的答案很难理解。如果您可以在帖子中添加更多信息,这将对提问者和未来的读者都有帮助。

以上是关于Sequelize:如何找到 Max 元素的主要内容,如果未能解决你的问题,请参考以下文章

了解 Sequelize 中的关联

如何在使用 Sequelize 更改列或添加新列时更新迁移文件

如何将查询逻辑添加到基于 graphql-sequelize 的设置?

在 Sequelize 中创建对象字段

使用把手显示来自 sequelize 查询的值

使用 Sequelize.js 进入包含模型