有条件链函数的方法?



我想做的是编写一个通用函数,用于从数据库中检索项目使用redisi -om-node。它使用这个方法链来指定我们想要检索的项

const items = await repositoryObject
.search()
.where("property1")
.match(query)
.or("property2")
.match(query)
.or("property3")
.match(query)
.return.all();

是否有一种方法,我可以循环通过数组的属性,使这个链写自己:

const items = await repositoryObject
.search()[loop outputed chain].return.all();

我知道我可以只是运行原始搜索,但我想知道我错过了一些关于javascript对象

当然,您可以创建一个对象数组,其中包含您想要使用的属性和相应的查询,然后像这样遍历它:

const queries = [{ property: "property1", query: query1 }, { property: "property2", query: query2 }, { property: "property3", query: query3 }]; // etc
let result = repositoryObject.search();
for (const { property, query } of queries) {
result = result.where(property).match(query);
}
return result.return.all();

如果你想的话,你可以更花哨一点,使用reduce:

// queries is as above
return queries.reduce((object, { property, query }) => object.property(property).match(query), repositoryObject.search()).return.all();

或在数组上使用forEach方法进行循环。基本上,你可以循环所有的方式,你在普通的Javascript -你只需要用它来构建一个属性链的形式,你给我们看。