Javascript 在typescript和nodejs中循环模型的所有属性
我有一个从模式获取所有项的通用模型Javascript 在typescript和nodejs中循环模型的所有属性,javascript,node.js,typescript,Javascript,Node.js,Typescript,我有一个从模式获取所有项的通用模型 export interface FilterViewModel<T> { filters: T } 现在我想搜索所有过滤器项并将其推送到变量中。我写了这段代码,但它不起作用,在所有项和一次循环中不循环 async GetAllUsersPaging(items: FilterViewModel<GetAllUserFilter>) { let query: any = []; [items.fi
export interface FilterViewModel<T> {
filters: T
}
现在我想搜索所有过滤器项并将其推送到变量中。我写了这段代码,但它不起作用,在所有项和一次循环中不循环
async GetAllUsersPaging(items: FilterViewModel<GetAllUserFilter>) {
let query: any = [];
[items.filters].forEach((element) => {
if (!element.phoneNumber) {
query.push(element);
} else {
query.push({ phoneNumber: { $regex: `(.*)${element.phoneNumber}(.*)` } });
}
});
}
异步GetAllUsersPaging(项:FilterViewModel){
let query:any=[];
[items.filters].forEach((元素)=>{
如果(!element.phoneNumber){
查询推送(元素);
}否则{
push({phoneNumber:{$regex:`(.*)${element.phoneNumber}(.*)`});
}
});
}
现在有什么问题?如何循环
项中的所有项。过滤器?项。过滤器看起来像一个对象而不是数组,我认为您的想法是循环GetAllUserFilter
的所有键,并将其值附加到查询数组中
您可以使用Object.keys
获取对象的所有关键点,然后在关键点检查对象的名称和值
async GetAllUsersPaging(items: FilterViewModel<GetAllUserFilter>) {
const query: any = [];
Object.keys(items.filters).forEach(key => {
const value = items.filters[key as keyof GetAllUserFilter];
if (key === 'phoneNumber' && value) {
query.push({ phoneNumber: { $regex: `(.*)${value}(.*)` } });
} else {
query.push({ [key]: value }); // ex: { blocked: true }
}
});
}
异步GetAllUsersPaging(项:FilterViewModel){
常量查询:any=[];
Object.key(items.filters).forEach(key=>{
常量值=items.filters[作为GetAllUserFilter的键的键];
如果(键=='phoneNumber'&&value){
push({phoneNumber:{$regex:`(.*)${value}(.*)`});
}否则{
query.push({[key]:value});//ex:{blocked:true}
}
});
}
当我使用您的代码时,它会显示以下错误:MongoError:不支持的投影选项:phoneNumber:{$regex:(*)0914(.*)}
query.push({phoneNumber:{$regex:new regex(value)});
async GetAllUsersPaging(items: FilterViewModel<GetAllUserFilter>) {
let query: any = [];
[items.filters].forEach((element) => {
if (!element.phoneNumber) {
query.push(element);
} else {
query.push({ phoneNumber: { $regex: `(.*)${element.phoneNumber}(.*)` } });
}
});
}
async GetAllUsersPaging(items: FilterViewModel<GetAllUserFilter>) {
const query: any = [];
Object.keys(items.filters).forEach(key => {
const value = items.filters[key as keyof GetAllUserFilter];
if (key === 'phoneNumber' && value) {
query.push({ phoneNumber: { $regex: `(.*)${value}(.*)` } });
} else {
query.push({ [key]: value }); // ex: { blocked: true }
}
});
}