vin*_*yal 5 node.js express sequelize.js
我正在使用SequelizeORM以及express.js下面是我的简约表结构.
Id status phone
1 0 09620701828
2 0 09620701828
Run Code Online (Sandbox Code Playgroud)
现在当api请求要在终点上进行时,我必须更新属于我从请求获得的特定电话的最后一个id的状态.原始的MySql查询将是UPDATE table SET status=1 where 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);
})`
Run Code Online (Sandbox Code Playgroud)
但order by子句不适用于上面和更新id的状态1.任何人都可以帮助我,而不使用原始查询sequelize.
Tom*_*ara 10
似乎Sequelize的Model#update功能不支持订购 - 请参阅http://sequelize.readthedocs.io/en/v3/api/model/#updatevalues-options-promisearrayaffectedcount-affectedrows上的文档
如果您确实希望通过排序来定位行,则可以先获取行,然后更新它:
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);
});
Run Code Online (Sandbox Code Playgroud)
使用两个查询而不是一个查询效率较低,但如果您不想使用原始查询,则当前看起来是您唯一的选择.
| 归档时间: |
|
| 查看次数: |
8073 次 |
| 最近记录: |