Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在typescript和nodejs中循环模型的所有属性_Javascript_Node.js_Typescript - Fatal编程技术网

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 }
    }
  });
}