为什么我无法选择特定的游戏对象?

问题描述 投票:0回答:1

我想增加我的游戏选择(您可以在下面看到),但不幸的是我的选择不起作用,它引发了异常。

我想进行以下sql查询:

Select * from Games
where userId = 3
order by createdAt desc

gameController.js:

exports.increaseScore = async (req, res) => {
    const userId = res.userId;

    try {
        const game = await Game.findOne({ where: { userId: userId } }, { limit: 1, order: [['createdAt', 'DESC']] });
        game.score += 1;
        await game.save();
        res.status(200).json("Score increased successfully!");
    } catch (err) {
        res.status(400).json(err);
    }
};

gameModell.js:

const Game = sequelize.define("Games", {
    id: {
        type: Sequelize.INTEGER,
        autoIncrement: true,
        primaryKey: true,
        unique: true,
    },
    score: {
        type: Sequelize.INTEGER,
        allowNull: false
    },
    difficulty: {
        type: Sequelize.INTEGER,
        allowNull: false
    },
});

exports.Game = Game;

游戏与用户的关系:

const userModel = require('./models/user');
const gameModel = require('./models/game');

userModel.hasMany(gameModel.Game, { foreignKey: 'userId' });
gameModel.Game.belongsTo(userModel, { foreignKey: 'userId' });
javascript mysql node.js express sequelize.js
1个回答
0
投票

您指定了除

where
以外的选项作为
findOne
的第二个参数,尽管您需要在第一个参数中全部指定它们:

const game = await Game.findOne({
  where: { userId: userId },
//  limit: 1,
  order: [['createdAt', 'DESC']]
});

此外,也无需指明

limit
,因为
findOne
已经自动执行了(这就是为什么它的名字是关于
one
,而不是
findAll
)。

© www.soinside.com 2019 - 2024. All rights reserved.