2016-12-07 353 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

相关问题