我正在使用风帆,我需要找到在数组中具有特定值的对象。
我有这个型号:
User = {
data = { type: 'array}
}
当我这样做时:
User.find({data:3}).exec(...)
// => It's returns nothing
如果我试试
User.find({data:{contains:3}}).exec(...)
// => It's will return all User who have '3' in the array
but it will return the users whose have 34 or 13, ... too.
在风帆中找不到阵列中的记录?
如果我将数据类型设为'json'会发生什么?
谢谢!
答案 0 :(得分:1)
实际上无法搜索array
或json
类型。
您必须使用关联:http://sailsjs.org/documentation/concepts/models-and-orm/associations
或者让所有用户手动进行搜索,但如果您的数据库中有很多用户则不会对其进行优化
答案 1 :(得分:1)
实际上可以搜索数组或json类型。
Waterline正在做的是等同于where data = '%3%'
,并且在您的数据库中,该数组被存储为字符串。
如果你改为
,你可以从技术上做你想做的事 User.find({data:{contains:',3,'}}).exec(...)
上述搜索假定您要查找的内容不是数组中的第一个/最后一个条目。如果存在这种可能性,那么您必须执行以下操作来检查所有情况。
{data:{contains:[',3,','[3','3]']}}
根据您的应用程序,数据库设置这通常是一个非常低效的搜索。但是如果不经常这样做,并且字段被索引,那么你的数据库就不会太大了。我不得不自己使用这种方法。但是你真的应该首先查看@jaumard提到的协会。
为什么不实施呢?因为SQL数据库中的json对象相对较新。