【问题标题】:Sequelize - Check if any strings in array contain a stringSequelize - 检查数组中的任何字符串是否包含字符串
【发布时间】:2020-12-01 13:56:53
【问题描述】:

现在,我的模型有一个包含单词数组的字段,例如一行将此字段设置为 ['tag1', 'tag2', 'pineapple']

现在假设有人搜索“pine”或“tag”。我想返回该数组中包含或等于该搜索词的字符串的所有实例/行?

因此,应该返回该行,因为它与 'pineapple' 中的 'pine' 匹配。因此,我想做 [Op.contains] 但也得到不精确的匹配。如果有帮助,我会在生产环境中使用 pgSQL。

【问题讨论】:

  • 您想知道数组的任何字符串是否包含完整的或作为一部分的测试字符串,并且想要返回整个数组,否则返回一个空数组?
  • 感谢您的回复,但我想做的是运行像 Model.findAll...bla bla 这样的 Sequelize 查询,其中字段 'tags'(一个数组字段)包含一个字符串,其中包含或是等于目标字符串?这更清楚吗
  • 不完整。如果你给我一个具体的例子(最好在问题中因为格式)你的模型是什么样的以及期望的输出应该是什么,会更容易。

标签: javascript node.js sequelize.js


【解决方案1】:

我不确定这是否是您想要的。我查看数组的任何字符串是否包含完整的测试字符串或作为一部分并返回整个数组,否则返回一个空数组。

为此,如果至少有 1 个数组元素包含在测试字符串的任何位置,我会查看 array.some。如果是这样,我将返回完整的数组,否则返回一个空数组。

 let array = ['tag1', 'tag2', 'pineapple'];
 
 function strContained(str, array) {
     return (array.some(elem => elem.indexOf(str)!=-1)) ? array : [];
 };
 

 console.log(strContained('pine', array));
 console.log(strContained('pines', array));
 console.log(strContained('tag1', array));

【讨论】:

  • 感谢您的回复,但我想做的是运行像 Model.findAll...bla bla 这样的 Sequelize 查询,其中字段 'tags'(一个数组字段)包含一个字符串,其中包含或是等于目标字符串?是不是更清楚了
猜你喜欢
  • 2015-09-08
  • 2012-04-30
  • 2021-12-14
  • 1970-01-01
  • 2011-12-23
  • 2015-02-28
  • 2021-06-10
  • 2013-09-27
相关资源
最近更新 更多