Sailsjs Mysql ORM在同一个表字段上进行多个查询

我使用的风帆V 0.10.5和最新的风帆 – MySQL的

我有一个餐厅过滤系统

Venue.find().populate('comments', { deleted: false }).where({ restaurant_services: {contains: '"delivery":1'}, restaurant_services: {contains: '"takeout":1'}, restaurant_specialties: {contains: '"breakfast":1'} }) 

现在问题是当我从客户端获取数据时,我不知道用户为restaurat_servicesselect了多less项目,所以显然我必须为.where()函数创build一个dynamicJSON对象

问题是,我不能这样做

 var searchObj = {}; searchObj['restaurant_specialties'] = {contains: '"breakfast":1'}; 

searchObj['restaurant_specialties'] = {contains: '"breakfast":1'};

所以你可能会看到之前的值设置被第二次replace,

任何帮助将不胜感激聪明的人在这里,但不工作

 Model.find({ name: { 'contains' : ['Walter', 'Skyler'] } }); 

为了做到这一点基于水线如何工作,你需要不同的领域进行search。

您可以通过在模型中创build别名属性来完成此操作。

 venue.js module.exports.attributes = { restaurant_services:'string', restaurant_services_1: {type:'string',columnName: 'restaurant_services'} restaurant_services_2: {type:'string',columnName: 'restaurant_services'} restaurant_services_3: {type:'string',columnName: 'restaurant_services'} restaurant_services_4: {type:'string',columnName: 'restaurant_services'} restaurant_services_5: {type:'string',columnName: 'restaurant_services'} } 

那你可以做

 Venue.find().populate('comments', { deleted: false }).where({ restaurant_services: {contains: '"delivery":1'}, restaurant_services_1: {contains: '"takeout":1'}, restaurant_specialties: {contains: '"breakfast":1'} }) 

它的哈克,但它的作品

 Venue.find().populate('comments', { deleted: false }).where({ restaurant_services: { contains: '"delivery":1', contains: '"takeout":1', }, restaurant_specialties: {contains: '"breakfast":1'} }) 

你需要的

 Venue.find({ where:{ restaurant_services: { contains: '"delivery":1', contains: '"takeout":1', }, restaurant_specialties: { contains: '"breakfast":"1"' } } }).populate('comments', { deleted: false }).exec(console.log);