对循环findall查询和合并结果使用sequelize

ecbunoof  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(353)

我正在大学课程中编写开源项目
它是一个通过用逗号分割输入关键字来搜索另一个表的值的函数。
在本例中
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]);
}

我已经成功地用上面的逗号分隔了它们,但是我正在sequelize中寻找一个循环。
“错误:发送邮件后无法设置邮件头。”
返回错误,不执行。
我想输出合并的结果。我该怎么办?
我的密码是

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

当做。

3duebb1j

3duebb1j1#

你的方向是对的,但这就是你能做的:

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 你不能仅仅用+=来组合承诺,因为它不是那样的字符串或数字
在您的例子中,它将为每个标记创建并运行查询,因此这不是正确的方法,您应该像我一样组合标记并创建单个查询

相关问题