2016-12-07 23 views
0

鑑於我有一個名爲Model的模型,其中包含一個包含字符串數組的items列,如何查詢字符串queryString是否在數組中或數組中有一個類似的元素?Sequelize PostgreSQL:查詢字符串是否在數組中

實施例:

items: ["cat", "dog", "bird", "turtle", "doe" ]

queryString = ["%do%","%b"]

應返回

animalArray = ["dog", "doe", "bird"]


編輯:有沒有辦法將$重疊與iLike配對?

Model.findAll({ 
    where: { 
     items: { $in: { $iLike: { $any: queryString } } } 
    } 
}).then(function(array){ 
    // Do whatever here with array 
}) 

$iLikeSequelize

由於特殊的Postgres的事情!

+0

錯誤的數據結構。參考postgresql數組文件(它說如果你正在搜索你的數組,你得到了錯誤的結果) – e4c5

回答

0

試試這個解決方案。

步驟1:創建其存儲在像條件

var conditions = []; 

var queryString = ["%do%","%b"]; 

步驟一個新的數組2:循環您的queryString值

for(var x in queryString) { 
    // do something 
} 

步驟3:內循環只是追加您的$like條件

conditions.push({ 
    items: { 
     $like: queryString[x] 
    } 
}); 

所以,你的陣列會是這樣

[{ 
    items: { 
     $like: "%do%" 
    } 
},{ 
    items: { 
     $like: "%b" 
    } 
}] 

所以你sequelize查詢會是這樣

var conditions = []; 
var queryString = ["%do%","%b"]; 

for(var x in queryString) { 
    conditions.push({ 
     items: { 
      $like: queryString[x] 
     } 
    }); 
} 

Model.findAll({ 
    where: {or: conditions} 
}).then(function(array){ 
    // Do whatever here with array 
}) 
+0

我已經試過了。您無法將數組與字符串iirc進行比較。謝謝你的嘗試! – Bryan

相關問題