今作っているアプリでデータベースにさまざまなデータを保存しているのですがあるデータを保存したときにnumberofmyAnswersに+1をするという処理があります。
↓実際の処理
javascript
1//Userはuserテーブルが保存されている定数です 2//データ作成後↓ 3 User.findOne({ 4 where: { userId: req.user.id } 5 }).then((myAccount) => { 6 myAccount.numberofmyAnswers += 1; 7 myAccount.changed('numberofmyAnswers', true); 8 myAccount.save(); 9 });
上記の処理でうまく+1できていたのですが、他のところでもこれと同じ処理をするため上記の処理を別の関数にして
javascript
1//データ作成後↓ 2increasenumberofmyAnswers(req); 3 4//別の関数で 5function increasenumberofmyAnswers(req) { 6 User.findOne({ 7 where: { userId: req.user.id } 8 }).then((myAccount) => { 9 myAccount.numberofmyAnswers += 1; 10 myAccount.changed('numberofmyAnswers', true); 11 myAccount.save(); 12 }).then(() => { 13 return true; 14 }); 15}
という処理に変えたのですがするとなぜか+1される時と+2される時とランダムでバグってしまいます。
この現象で考えられる原因を教えてください。コードの量が多いため一部分しか掲載することができませんでしたが、別のところはどうなっているか知りたい場合は質問し返してください。よろしくお願いします。
↓userテーブルのuser.js(データモデル)
javascript
1const User = loader.database.define( 2 'users', 3 { 4 userId: { 5 type: Sequelize.DECIMAL, 6 primaryKey: true, 7 allowNull: false 8 }, 9 username: { 10 type: Sequelize.STRING, 11 allowNull: false 12 }, 13 numberofmyAnswers: { 14 type: Sequelize.INTEGER, 15 allowNull: false, 16 defaultValue: 0 17 }, 18 numberofmyQuestionnaire: { 19 type: Sequelize.INTEGER, 20 allowNull: false, 21 defaultValue: 0 22 } 23 }, 24 { 25 freezeTableName: true, 26 timestamps: false, 27 indexes: [ 28 { 29 fields: ['userId'] 30 } 31 ] 32 } 33);
あなたの回答
tips
プレビュー