Sails.js和Waterline:查找搜索词在数组或嵌套对象中的位置

时间:2018-10-29 20:47:14

标签: sails.js waterline

我正在尝试使用Sails.js中的Waterline编写一个复杂的查找查询。这是我在上面进行查找的对象的简化示例:

object description

基本上,我想编写一个查询,其中提供的搜索字符串可以等于id,可以在myArray属性中,也可以是myNestedObject.nestedAttribute的值。

我知道我可以做一个或类似的事情:

MyModel.find().where({ or: [] });

or中作为.where()提供的数组是应添加匹配项的地方,例如:

{ id: { 'contains': searchTerm } }

如何使用Waterline进行查询,在其中可以提供搜索词(searchTerm),以查看该值是否在myArray对象中?以及如何检查嵌套属性?我正在使用sails-mongo适配器,但我不想编写任何特定于Mongo的查询,以便将来获得使用ORM的所有好处(例如,如果我们脱离Mongo或其他方式)。

1 个答案:

答案 0 :(得分:1)

无法使用标准水线查询语法在嵌入内容中进行搜索,但是您可以尝试:

  1. 以不同的方式构造数据。
  2. 使用mongo native query
  3. 使用.stream()并逐个检查每个记录(如果不是该查询) 延迟敏感(例如计划的作业或迁移脚本)。