只更新sequelize中的一行

我使用Sequelize作为ORM与express.js以下是我的简约表结构。

 Id status phone 1 0 09620701828 2 0 09620701828 

现在,当一个API请求是在一个端点上,那么我必须更新属于我从请求中获得的特定电话的最后一个ID的状态。 原始的MySql查询将为UPDATE table SET status=1 where phone='09620701828' ORDER BY id DESC LIMIT 1;

我如何使用Sequelize更新方法来实现相同的function。 以下是我所尝试过的

 models.customerLeadFeedback.update( {status: 1}, { where: {phone : '09620701828'}, order: [['id', 'DESC']], limit : 1 }).then(function () { res.sendStatus(200); })` 

但子句顺序不工作以上和更新状态为ID 1.任何人都可以帮助我,而不使用原始查询sequelize

看起来,Sequelize的Model#update函数不支持sorting – 请参阅http://sequelize.readthedocs.io/en/v3/api/model/#updatevalues-options-promisearrayaffectedcount-affectedrows上的文档

如果你真的想通过sorting来定位行,你可以先取行,然后更新它:

 models.customerLeadFeedback.findOne( {status: 1}, { where: {phone : '09620701828'}, order: [['id', 'DESC']] }).then(function (record) { return record.update({status: 1}); }).then(function (record) { res.sendStatus(200); }); 

效率不高,使用两个查询而不是一个查询,但是如果您不想使用原始查询,那么当前看起来只有您唯一的select。