首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sequelize ()问题

Sequelize ()问题
EN

Stack Overflow用户
提问于 2015-08-19 10:02:23
回答 2查看 6.1K关注 0票数 5

在使用NodeJS后缀时,我发现了模型上的.save()方法的一个问题。

假设数据库表中有如下条目:

代码语言:javascript
复制
{ id : 1, name : "mary", enteredCompetition : 1, won : 0 }
{ id : 2, name : "mark", enteredCompetition : 1, won : 0 }
{ id : 3, name : "maya", enteredCompetition : 1, won : 0 }
{ id : 4, name : "maci", enteredCompetition : 0, won : 0 }

我检索了一个参加竞赛的用户,并将该用户设置为已获奖:

代码语言:javascript
复制
User.findOne( { where : { enteredCompetition : 1 } } )
    .then( function( user ) {
        user.won = 1;
        user.save().then( function() {
            // done
        } );
    } );

问题是,这段代码将继续更新数据库中将"enteredCompetition“设置为1的所有用户。

我假设这与从findOne方法返回的模型对象的选项有关。whereCollection被设置为{ enteredCompetition: 1 },因此,当对它调用enteredCompetition()时,它使用更新sql中的条件:

代码语言:javascript
复制
UPDATE `users` SET `won`=1,`updatedAt`='2015-08-19 09:59:27' WHERE `enteredCompetition` = 1

我的问题是:这是预期的行为吗?我个人认为它只会更新它最初从数据库中提取的记录,但是也许我缺少了一个实现这一点的方法?

我的当前解决方案是使用原始查询返回的对象的id再次调用findOne,然后对其调用save()。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-20 05:11:43

你用的是什么版本的续集?我刚刚用3.5.1运行了一个简单的测试,正如您所期望的一样。

起跑表:

代码语言:javascript
复制
+----+-------------+--------+
| id |  username   |  type  |
+----+-------------+--------+
|  1 | joshua f    | NORMAL |
|  2 | joshua f jr | NORMAL |
+----+-------------+--------+

代码语言:javascript
复制
db.user.findOne({
  where: {
    type: 'NORMAL'
  }
}).then(function(instance) {
  instance.type = 'IRONMAN';
  instance.save().then(function() {
    console.log('saved');
  });
});

提供了以下SQL:

代码语言:javascript
复制
UPDATE `users` SET `type`='IRONMAN',`updatedAt`='2015-08-20 05:07:49' WHERE `id` = 2

和下表

代码语言:javascript
复制
+----+-------------+---------+
| id |  username   |  type   |
+----+-------------+---------+
|  1 | joshua f    | IRONMAN |
|  2 | joshua f jr | NORMAL  |
+----+-------------+---------+
票数 2
EN

Stack Overflow用户

发布于 2015-08-19 11:34:11

尝试控制台记录用户并查看其中包含的内容

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32092369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档