我正在尝试从名为fairCustomer的表中选择所有记录,其中business_type_id等于值数组。 我在服务器上使用sailsjs,在数据库上使用mysql,在前端,我在打字机上使用nativescript。
这是我的代码:
NOT EXISTS
“ 消息”:“无法解析提供的 filterShopType(){
this.service.serviceName = 'fairCustomers';
this.service.Get({ populate:'country_id,business_type_id',where:{ business_type_id:{ in:this.business_ids_filter } }, limit:20 }).then((data: any) => {
this.fairCustomers.splice(0, this.fairCustomers.length);
this.fairCustomers.push(data);
this.Refresh('fairCustomers');
}).catch((err) => {
console.log('failed get fairCustomers from server ', err);
});
}
子句。有关支持的查询语言语法的最新信息,请参见Sails文档:\ n({{ 3}})\ n详细信息:where
的无法识别的子属性修饰符(in
)。请确保使用可识别的子属性修饰符,例如business_type_id
,startsWith
, <=
等)”,
,如果我删除了位置,则会得到错误结果。
请问有人有什么想法或解决方案吗?
答案 0 :(得分:0)
您可以尝试使用https://sailsjs.com/documentation/reference/waterline-orm/datastores/send-native-query
所述的本地查询答案 1 :(得分:0)
据我所知,您只需提供一系列项目即可。与数组中的任何项目匹配意味着记录应作为结果的一部分返回。但不确定是否可以在where
子句中使用。
文档: Query Language(滚动至:在修改器中)
我确实对您为什么给定查询不起作用感到困惑,因为文档指出in
应该是有效的,但在where:{...}
内部可能无效?我假设您在.find()
中使用.Get(...)
吗?只需将未更改的查询代理到.find()
?
filterShopType(){
this.service.serviceName = 'fairCustomers';
this.service.Get({
populate:'country_id, business_type_id',
business_type_id: this.business_ids_filter,
limit:20
})
.then((data: any) => {
this.fairCustomers.splice(0, this.fairCustomers.length);
this.fairCustomers.push(data);
this.Refresh('fairCustomers');
}).catch((err) => {
console.log('failed get fairCustomers from server ', err);
});
}
现在,如果您使用in:
,那么您当然需要确保该数组实际上是一个数组。
答案 2 :(得分:0)
使用[or]而不是[in]与我一起工作,这是代码
filterShopType(){
if(this.business_ids_filter){
this.service.serviceName = 'fairCustomers';
var arr = [];
this.business_ids_filter.forEach( (id) => {
arr.push({ business_type_id: id })
});
let where = {};
if(arr.length > 0){
where = {or: arr};
}
this.service.Get({ populate: 'country_id,business_type_id',where:where , limit:20 }).then((data: any) => {
this.filterItems.splice(0, this.filterItems.length);
this.filterItems.push(data);
this.Refresh('filterItems');
}).catch((err) => {
console.log('failed get fair Customers from server ', err);
});
}else{
this.set('isFilter', false);
}
}