Comparando Ids de documentos do Mongoose com String equivalente

Surpreendentemente, o Mongoose tem a capacidade de gerar objetos que aparecem como strings, strings que aparecem como arrays e todos os tipos de estranheza que você não pode ver prontamente no console.

Felizmente, com alguma experiência, você aprende isso da maneira mais difícil.

Economize tempo e use .lean()em suas consultas somente leitura, então você realmente será capaz de comparar 'abc'e 'abc'com ==ou de ===outra forma você pode achar isso impossível.

Ao não usar .lean()porque deseja preservar virtuais, getters, setters e salvar a funcionalidade no documento Mongoose, você deve converter o tipo.

Para algumas chaves você pode usar o getter integrado do Mongoose

get('somekey', String)onde você declara explicitamente o tipo que deseja retornar. No entanto, isso não funcionará para o documento em _idsi.

Para isso, você deve usar:

document.toString()

Atualizar

Você também pode comparar usando o .equals()método integrado em document._id.equals(some_string)vez de usar o document._id === some_stringque não funcionará de forma alguma, e isso o deixará frustrado porque eles farão o mesmo log.