node.js - 方法返回相同的次数

标签 node.js sequelize.js

数据库

sequelize.sync().then(function () {
    keywordTitle.create({
        Title: 'ceo',
        userId: 1
    })
});
服务器.js
              keywordTitle.findAll({where: {userId: req.user.id}}).then((keywordsTitle) => {
                let titleFromDB = keywordsTitle.map(title => title.dataValues.Title);
                titleFromDB.forEach(userTitle => {
                  console.log(userTitle)
                })
              })
它应该只返回 ceo 一次,但会返回更多次。
Executing (default): SELECT `id`, `Title`, `createdAt`, `updatedAt`, `userId` FROM `keywordTitles` AS `keywordTitle` WHERE `keywordTitle`.`userId` = 1;
ceo
ceo
ceo
ceo
Executing (default): SELECT `id`, `Title`, `createdAt`, `updatedAt`, `userId` FROM `keywordTitles` AS `keywordTitle` WHERE `keywordTitle`.`userId` = 1;
ceo
ceo
ceo
ceo
Executing (default): SELECT `id`, `Title`, `createdAt`, `updatedAt`, `userId` FROM `keywordTitles` AS `keywordTitle` WHERE `keywordTitle`.`userId` = 1;
ceo
ceo
ceo
ceo

最佳答案

首先检查 userId 是否唯一。您似乎有多个具有相同 userId 的记录。
如果要返回单个记录,请使用 findOne 函数

keywordTitle.findOne({where: {userId: req.user.id}})
    .then(keywordTitle => {
        if (!keywordTitle) {
            // If the title cannot be found it will be null
            return;
        }
        const titleFromDB = keywordTitle.Title;
        console.log(titleFromDB);
    });
});
要记住的一件事是,如果您有多个具有相同 userId 的关键字标题,则上述函数将仅返回第一条记录

关于node.js - 方法返回相同的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62709396/

相关文章:

node.js - sequelize 可以多次删除吗?

javascript - 使用sequelize ownTo 和 hasOne 会导致超出最大调用堆栈大小

node.js - npm run 不提供脚本作为建议

arrays - 如何订阅 channel 数组Node + Redis

node.js - NodeJS - 从可读流中查看数据事件,而无需从可写流中相应暂停

node.js - 如何获取每个用户的对话并包含消息?

node.js - 在管道传输之前捕获 super 代理请求错误

node.js - 如何使用和尚连接到 mongodb?

postgresql - 如何使用 Sequelize 在 PostgreSQL 中关闭单引号转义

sequelize.js - Sequelize 的 Model.update() 的 'value' 参数应该是什么样的?