使用Sequelize on for循环findAll查询并合并结果

时间:2018-11-22 14:22:30

标签: mysql node.js sequelize.js

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

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

在此示例数据下

  

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
    });
}

致谢。

1 个答案:

答案 0 :(得分: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() //<---- Returns promises

     

您不能只用+ =来组合诺言,因为它不是字符串或数字   这样

     

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