只更新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。