我使用Sequelize作为ORM以及express.js下面是我的简约表格结构.
Id status phone 1 0 09620701828 2 0 09620701828
现在当api请求要在终点上进行时,我必须更新属于我从请求获得的特定电话的最后一个id的状态.原始MySQL查询将是UPDATE表SET status = 1其中phone =’09620701828’ORDER BY id DESC LIMIT 1;
我如何使用Sequelize更新方法实现相同目的.以下是我的尝试
models.customerLeadFeedback.update( {status: 1},{ where: {phone : '09620701828'},order: [['id','DESC']],limit : 1 }).then(function () { res.sendStatus(200); })`
但order by子句不适用于上面和更新id的状态1.任何人都可以帮助我,而不使用sequelize中的原始查询.
解决方法
似乎Sequelize的模型#更新功能不支持订购 – 请参阅
http://sequelize.readthedocs.io/en/v3/api/model/#updatevalues-options-promisearrayaffectedcount-affectedrows的文档
如果您确实希望通过排序来定位行,则可以先获取行,然后更新它:
models.customerLeadFeedback.findOne( {status: 1},{ where: {phone : '09620701828'},'DESC']] }).then(function (record) { return record.update({status: 1}); }).then(function (record) { res.sendStatus(200); });