Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

135
Visualizações
findOne() está devolviendo el modelo completo en lugar de un documento

Estoy usando findOne() para extraer un documento. Al imprimir el valor devuelto, imprime el resultado correcto, pero al recorrerlo, imprime el modelo en lugar del documento original. El documento en la tabla City se almacena como:

 { _id: 62e135519567726de42421c2, configType: 'cityConfig' '16': { cityName: 'Delhi', metro: true, tier1: true }, '17': { cityName: 'Indore', metro: false, tier1: false } }

El código -

 const getCities = async () => { const cityConfig = await City.findOne({ configType: "cityConfig" }); console.log("cityConfig - ", cityConfig); let metroCities = []; for(var city in cityConfig) { console.log("city - ", city); if(cityConfig[city].metro == true) { // throws an error here obviously metroCities.push(city); } } return metroCities; };

La salida de cityConfig es correcta, pero dentro del ciclo for, itera sobre el modelo en lugar del documento. Producción -

 cityPassConfig - { '16': { cityName: 'Nagpur', passIssuedCities: false, digitalDiscountEnabledCities: false, bhopalIndore: false, mPanelCitiesForPass: false }, '17': { cityName: 'Mumbai', passIssuedCities: false, digitalDiscountEnabledCities: false, bhopalIndore: false, mPanelCitiesForPass: false }, _id: 62e288807b59432f87e32a82, configType: 'cityPassConfig' } city - $__ city - isNew city - errors city - $locals city - $op city - _doc city - $init city - db city - discriminators city - configType city - cityId city - configData city - enabled city - lastModifiedby city - _id city - updatedAt city - createdAt . . . .

Quiero que solo itere sobre 16 y 17 (las claves del objeto). ¿Como hacer eso? Versión del nodo - v14.15.4

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

El problema parece ser con su documento:

 { _id: 62e135519567726de42421c2, configType: 'cityConfig' // There should be a comma here, but not sure if that's affecting anything. '16': { cityName: 'Delhi', metro: true, tier1: true }, '17': { cityName: 'Indore', metro: false, tier1: false } }

Tu '16' y '17' son hermanos con configType . Deberías tenerlo anidado dentro, por ejemplo.

 { _id: 62e135519567726de42421c2, configType: 'cityConfig', cityConfig: [ '16': { cityName: 'Delhi', metro: true, tier1: true }, '17': { cityName: 'Indore', metro: false, tier1: false } ] }
about 4 years ago · Juan Pablo Isaza Relatório

0

Está utilizando Mongoose, por lo que si desea devolver el objeto JavaScript, debe usar el método lean() .

 const cityConfig = await City.findOne({ configType: "cityConfig" }).lean();

Si no usa lean() , Mongoose hidratará el documento. Puedes leer más aquí .

about 4 years ago · Juan Pablo Isaza Relatório

0

Puede verificar las claves que son solo numbers .

 const cityConfig = await City.findOne({ configType: "cityConfig", }); console.log("cityConfig - ", cityConfig); let metroCities = []; for (var city in cityConfig) { if (!isNaN(city)) { console.log("city - ", city); if (cityConfig[city].metro == true) { // throws an error here obviously metroCities.push(city); } } } return metroCities; };
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda