首页 > 解决方案 > 使用 OR 对多对多搜索进行续集

问题描述

我的代码的主要思想是创建一个搜索字段,我有两个多对多字段,我想绑定对多对多表的搜索

我想选择 modelos.nome_modelo_produto 表中的 modelos.nome_modelo_produto 字段,但从不工作,因为即使在我提到表之间的关系之后,sequelize 也无法识别该字段:

Modelo.belongsToMany(Produto, {through: 'ProdutosModelos'});
Produto.belongsToMany(Modelo, {through: 'ProdutosModelos'});

搜索的想法是这样的......

Table.findAll({
where: {
            [Db.Sequelize.Op.or]: [
                {'nome_produto': Db.sequelize.where(Db.sequelize.fn('LOWER', Db.sequelize.col('nome_produto')), 'LIKE', '%' + req.query.search + '%')},

{'$modelos.nome_modelo_produto$': Db.sequelize.where(Db.sequelize.fn('LOWER',Db.sequelize.col('$modelos.nome_modelo_produto$')), 'LIKE', '%' + req.query.search + '%')}
            ]
}
})

但不工作......有人可以帮助我或给我一个继续的方法吗?

标签: javascriptmysqlnode.jssequelize.js

解决方案


如果有人遇到此错误,我已经检查过,当您在其中使用限制或偏移标签时,存在我无法解决的恼人错误。

所以我的提示是删除偏移量和限制,并将表列重命名为仅按名称查找,例如,如果表事物中有字段标签,则可以将标签字段重命名为 things_tags,如果它是一个关系字段,并且当您在其中设置字段时,您只能插入字段名称而不插入表名称。


推荐阅读