1
Hello I am creating a generic query according to the code below:
// dados de exemplo em uma coleção "test" do mongodb
const test = [
{ "name": "foo", age: 2 },
{ "name": "bar", age: 16 },
{ "name": "bin", age: 53 },
]
// tipo esperado na coleção
type Test = {
name: string
age: number
}
// resultado esperado nas buscas tipo "search"
type SearchResult<T = any> = {
total: number
limit: number
offset: number
items: Partial<Array<T>>
}
// aggregation que estou montando
async function searchTest({
// aqui entra a consulta de dados
where = {},
// tamanho maximo da paginacao
limit = 50,
// inicio da paginacao
offset = 0,
// a ordenacao que sera aplicada
sort,
// os campos que devem retornar nos items
fields
}): Promise<SearchResult<Test>> {
const agg = [
// filtra os dados
{ $match: where },
// se tiver um sort ele ordena
sort && { $sort: sort },
// quebra a consulta em 2 pra achar a quantidade total
// de itens atendidas pela query
{
$facet: {
total: [
{ $count: "total" },
],
items: [
// pula x itens no offset pra paginação
{ $skip: offset },
// pega x itens no limit pra paginação
{ $limit: limit },
// aqui preciso filtrar os campos que forem enviados
// se forem enviados...
fields && { /* ???*/ }
].filter(x => x)
}
}
].filter(x => x)
return await db.getCollect
I need to know how to filter the fields that will be returned to the objects dynamically... If we are in SQL could do something like:
const fields = 'foo, age'
const sql = `SELECT ${fields}` FROM test`
Could someone help me?
good! really this reslve my problem of the fields q want to return
– LeandroLuk