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 _id
si.
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_string
que não funcionará de forma alguma, e isso o deixará frustrado porque eles farão o mesmo log.