我的应用程序中有一个人名搜索框。候选人姓名存储为firstName,然后是lastName。当我搜索应用程序时,应用程序输入提交了一个调用ajax函数,我有这段代码。在Sequelize中一次查询两个组合字段
filters.where = {
$or: ['firstName', 'lastName', 'email'].map((item) =>
({[item]: {[queryClause]: `%${query}%`}}))
};
const scope = req.query.list;
const candidates = await CandidateModel.scope(scope).findAll(filters);
因此,如果我在搜索框中输入“约翰”的类型,它会找到的候选人,如果我在的话输入“史密斯”它会找到的候选人。
问题是,如果我输入全名“John Smith”,它将不会出现,因为查询正在检查“John Smith”是否等于“John”,即第一个名称,或者如果“约翰史密斯”等于“史密斯”,即最后一个名字。它不等于这些。
有没有一种方法可以通过sequalize中的组合字段进行过滤,因此它会测试查询是否与firstName和lastName字段相结合?
如果名字/姓氏在其中包含多个单词,则不起作用。例如firstName ='Charles'lastName ='de Gaulle'。 – Yegor