2017-02-28 96 views
0

我需要你的幫助。我正在使用node.js和reactJS在Web服務器上工作。我想爲Admin創建一個名爲「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, }) 

現在這些兩段代碼創建一個文本框「名稱」和一個下拉菜單「國家」,管理員必須選擇確切的用戶名和正確的國家才能得到結果。
我需要一個允許管理員輸入名稱(姓或名)或國家並使用任何匹配名稱或部分匹配或與匹配的國家/地區獲得結果的後續查詢。

附加信息:我不知道是否有可能,我希望在管理員寫入名稱(匹配每個鍵入的字母並顯示結果)期間顯示結果。預先感謝任何人都可以提供幫助。

回答

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 , }) 

(這裏)是包含條款(或者),其執行從含(參數數據庫名字或姓氏選擇的對象。例如,我想在數據庫中搜索用戶「John」,如果我輸入「Jo」,它將得到所有具有「John」的用戶的結果,作爲數據庫的名字或姓氏,因爲他們的名字中包含「Jo」。