Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何使用Sequelize获取最大列_Mysql_Orm_Sequelize.js - Fatal编程技术网

Mysql 如何使用Sequelize获取最大列

Mysql 如何使用Sequelize获取最大列,mysql,orm,sequelize.js,Mysql,Orm,Sequelize.js,我正在使用Sequelize,我在获取列的最大值方面遇到了问题 var userId = req.body.userId; Sensor.findAll( { where : { userId : userId }, attributes: [ sequelize.fn('MAX', sequelize.literal('temperature')) ], include: [{ model: models

我正在使用Sequelize,我在获取列的最大值方面遇到了问题

var userId = req.body.userId;
Sensor.findAll(
{
    where : {
        userId : userId
    }, 
    attributes: [
        sequelize.fn('MAX', sequelize.literal('temperature'))
    ],
    include: [{
        model: models.Temperature
    }]
}).then(function(sensor_result) {
    res.status(200).json({ status:"success", data: sensor_result });
}).catch(function(error) {
    console.log(error);
    res.status(409).json({ status:"error", data: null, message:"Something went wrong, please try again." });
})
这是可行的,但如果我像这样将“温度”列更改为“板条箱数据”列,则会导致出现“ER_NON_UNIQ_错误:字段列表中的“createdAt”列不明确”的问题

一个暂时的解决办法是解决这个问题,但根本没有效率

Sensor.findAll(
{
    where : {
        userId : userId
    }, 
    include: [{
        model: models.Temperature,
        order: [['createdAt', 'DESC']],
        limit: 1
    }]
}).then(function(sensor_result) {
    res.status(200).json({ status:"success", data: sensor_result });
}).catch(function(error) {
    res.status(409).json({ status:"error", data: null, message:"Something went wrong, please try again." });
})

因此,我想知道是否有任何选项可以获取createdAt列的最大值

您是否尝试在第二个查询中使用完整的列名?根据您的情况,它将是
sequelize.fn('MAX',sequelize.literal('Temperature.createdAt'))
。我认为这个错误是由多个列的名称为
createdAt
(因此变得模棱两可)造成的,但不知何故,它也不起作用。但不管怎样,我发现我的逻辑是错误的,因为这会返回我最新的时间,而我要寻找的是插入最新的温度。这样的话,查询就不起作用了,是我的错。
Sensor.findAll(
{
    where : {
        userId : userId
    }, 
    include: [{
        model: models.Temperature,
        order: [['createdAt', 'DESC']],
        limit: 1
    }]
}).then(function(sensor_result) {
    res.status(200).json({ status:"success", data: sensor_result });
}).catch(function(error) {
    res.status(409).json({ status:"error", data: null, message:"Something went wrong, please try again." });
})