【问题标题】:Sequelize query to select match or partially match nameSequelize 查询以选择匹配或部分匹配的名称
【发布时间】:2017-07-19 01:06:43
【问题描述】:

我需要你的帮助。我正在使用 node.js 和 reactJS 开发 Web 服务器。我想为管理员创建一个名为“用户”的页面来搜索 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,  })

现在这两条代码创建了一个文本框“名称”和一个下拉菜单“国家/地区”,管理员必须选择准确的用户名和正确的国家/地区才能获得结果。
我需要一个 sequelize 查询,让管理员输入姓名(名字或姓氏)或国家,并获得任何匹配名称或部分匹配或匹配国家/地区的结果。

附加:我不知道是否可能,我希望在管理员编写名称期间显示结果(匹配每个键入的字母并显示结果)。提前感谢任何人都可以提供帮助。

【问题讨论】:

    标签: javascript sql node.js reactjs sequelize.js


    【解决方案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) 是一个包含子句 (or) 的对象,它会从包含 (args.firstname) 的数据库中选择名字或姓氏 - 已由管理员输入 -

    例如:我想在数据库中搜索用户“John”,如果我输入“Jo”,它将得到所有用户的结果,其中所有用户的名字或姓氏为“John”,因为他们包含“Jo "以他们的名义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-22
      • 1970-01-01
      • 2019-03-16
      • 2020-12-09
      • 1970-01-01
      • 2017-03-02
      • 2013-07-17
      • 2016-08-12
      相关资源
      最近更新 更多