如何搜索模型'array'类型的属性

时间:2015-11-04 16:18:55

标签: node.js sails.js waterline

我有ModelPet,其属性为favoriteFoods

// Pet.js
module.exports = {

    attributes: {
        name: {
            type: 'string'
        },
        favoriteFoods: {
            type: 'array'
        }
    }
};

favoriteFoods存储为array,因为它是用户的自由文本字段。

现在,根据find的值,array是否有办法?

我实际上对从URL查询感兴趣,以下示例可以正常工作,但这并不理想。

/pet?where={"favoriteFoods":{"contains":"Best Food"}}

有更好的方法吗?字符串比较似乎不是最佳解决方案。

例如,如果一个示例条目具有favoriteFoods: ["Best Food", "Best Treats"]而另一个条目具有favoriteFoods: ["Second Best Food", "Best Treats"],则上面的query将返回2个结果。我们的目标是与数组中的一个条目完全匹配的结果,因此这不会给我们预期的结果。

1 个答案:

答案 0 :(得分:0)

最简单的解决方案,虽然可能不是最高效的解决方案,但只需简单地封装在引号中。以下内容会找到"Best Food"而不是"Second Best Food"

/pet?where={"favoriteFoods":{"contains":"\"Best Food\""}}

子文档查询正在下一版的水线中实施。您的其他选择是nativequery,具体取决于您的适配器。

在这种情况下,您的适配器将产生最大的不同。