我需要你的帮助。我正在使用node.js和reactJS在Web服务器上工作。我想为管理员创建一个名为" Users"搜索SQL数据库中的用户。我编写了一个代码,创建了两个选项来搜索用户"名称"或"国家" 这是代码:
UserSearch: {
fields : {
firstname: {value:'', type:'text', label:"Name", placeholder:'type name', bluredBefore:false, validators:['non'], errorReport:[]},
country: {value:'-1', type:'select', label:"Country", placeholder:'select country', staticDataSource:'countries', bluredBefore:false, validators:['non'], errorReport:[]},
},
errorReport:false,
isWaiting : false,
queryTarget: 'userFind',
queryView: 'UserSearchGrid',
queryViewFields: 'userId, firstname, lastname ',
formCols:3,
notification: '',
},
UserSearchGrid: {searchForm:'UserSearch',
viewFields: ['userId','firstname','lastname'],
dataSource:[], count:0, offset:0, limit:10},
在查询文件中我写了这段代码:
var where = {userId:userId,};
if (typeof args.firstname !== 'undefined' && args.firstname !== '')
where['firstname'] = args.firstname;
if (typeof args.country !== 'undefined' && args.country !== '-1')
where['country'] = args.country;
items = await UserProfile.findAndCountAll({
where: where, })
现在这两段代码创建了一个文本框" Name"和一个下拉菜单"国家"并且管理员必须选择确切的用户名和正确的国家/地区才能获得结果 我需要一个sequelize查询,让管理员输入名称(名字或姓氏)或国家/地区,并获得任何匹配名称或部分匹配或匹配国家/地区的结果。
附加:我不知道是否可能,我希望在管理员写入名称(匹配每个打字的字母并显示结果)期间显示结果。提前感谢任何人都可以提供帮助。
答案 0 :(得分:1)
解决: 我编辑我的if语句是这样的:
var where = {};
if (typeof args.firstname !== 'undefined' && args.firstname !== '')
// where['firstname'] = args.firstname;
where['$or']={firstname:{$like: `%${args.firstname}%`},lastname:{$like: `%${args.firstname}%`}};
items = await UserProfile.findAndCountAll({
where: where , })
(where)是一个包含子句(或)的对象,它从数据库的名字中选择,或者包含(args.firstname)的姓氏 - 由Admin-
输入Ex:我想在数据库中搜索用户“John”,如果我输入“Jo”,它将获得所有用户的结果,其中“John”作为他们的名字或姓氏来自数据库,因为他们包含“Jo” “以他们的名义。