[英]Javascript convert array to object to use in Find in Mongoose
我正在尝试为 Mongoose 中的搜索构建动态过滤器。
我得到了一个包含各种过滤器的数组,我想在 this.mySchema.find ({QUERY}) 中使用它们,如下所示:
[
{ name: { '$eq': 'John' } },
{ surname: { '$regex': '.*t', '$options': 'i' } }
]
现在我想按如下所有过滤器搜索
const query = this.customerModel.find(findFilters);
但我收到以下错误
find() 的参数“filter”必须是 object,得到 [object Object],[object Object]
我尝试将其转换为 object,但我得到了一些我也无法使用的东西
{ ...findFilters }
结果:
{
'0': { name: { '$eq': 'John' } },
'1': { surname: { '$regex': '.*t', '$options': 'i' } }
}
我也试过这个:
const result = {};
findFilters.forEach(e => result[e] = {});
但是我得到了一些在 Find 中也不起作用的东西,并且过滤器在搜索过程中不起作用
{ '[object Object]': {} }
那么,如何在 Find 方法中使用我的过滤器数组?
您需要reduce()
为单个 object:
const filters = [ { name: { '$eq': 'John' } }, { surname: { '$regex': '.*t', '$options': 'i' } } ]; const filter = filters.reduce((a, v) => ({...a,...v}), {}); console.log(filter);
您的结果是待处理的 promise
您需要使用异步 function 并使用await
:
const query = await this.customerModel.find(findFilters);
或.then()
this.customerModel.find(findFilters).then(res => {
console.log(res);
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.