【问题标题】:Use Sequelize on for loop findAll query and merge result在 for 循环 findAll 查询和合并结果上使用 Sequelize
【发布时间】:2026-01-20 19:50:01
【问题描述】:

我在大学课程中编写开源项目

通过输入关键字除以逗号来搜索另一个表的值的功能。

本示例数据下

Python,CPP,Csharp

var keyword = result[0].keyword;
var keyword_arr = [];
var keyword_split = keyword.split(',');
for (var i in keyword_split)
{
   keyword_arr.push(keyword_split[i]);
}

我已经成功地将它们用逗号分隔,但我正在寻找续集中的循环。

“错误:发送后无法设置标头。”

返回错误,不执行。

我想输出合并的结果。我该怎么办?

我的代码是

for (i = 0; i < keyword_arr.length; i++) {
    query += models.contents.findAll({
        where: {keyword: {like: '%' + keyword_arr[i] + '%'}},
        raw: true
    });
}

问候。

【问题讨论】:

    标签: mysql node.js sequelize.js


    【解决方案1】:

    你的方向是对的,但这里是你可以做的:

    queries = [];
    
    for (i = 0; i < keyword_arr.length; i++) {
        queries.push({keyword: {like: '%' + keyword_arr[i] + '%'}});
    }
    
    models.contents.findAll({
        where: {
            $or : queries
        }
        raw: true
    }).then(results => {
        console.log(results); // <---- Check this
    })
    

    注意事项:

    models.contents.findAll() //&lt;---- Returns promises

    你不能仅仅通过 += 组合承诺,因为它不是字符串或数字 像这样

    在您的情况下,它将为每个标签创建并运行查询,所以 这不是正确的做法,您应该像我一样组合标签并创建一个查询

    【讨论】:

    • 快乐编码 :)