Lo que estoy tratando de hacer es escribir una función universal para recuperar elementos de la base de datos usando redis-om-node . Utiliza esta cadena de métodos para especificar qué elementos queremos recuperar.
const items = await repositoryObject .search() .where("property1") .match(query) .or("property2") .match(query) .or("property3") .match(query) .return.all();¿Hay alguna manera de que pueda recorrer una serie de propiedades para hacer que esta cadena se escriba como:
const items = await repositoryObject .search()[loop outputed chain].return.all();Soy consciente de que solo puedo ejecutar una búsqueda sin procesar, pero quiero saber si me estoy perdiendo algo sobre los objetos de JavaScript.
Claro, podría crear una matriz de objetos que contengan las propiedades y las consultas correspondientes que desea usar, y luego recorrerlas de esta manera:
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(); Podrías ponerte más elegante y usar reduce si quisieras:
// queries is as above return queries.reduce((object, { property, query }) => object.property(property).match(query), repositoryObject.search()).return.all(); o use el método forEach en la matriz para hacer un bucle. Básicamente, puede realizar un bucle de todas las formas que tiene en Javascript normal; solo tiene que usarlo para construir una cadena de propiedades del formulario que nos mostró.