GOOGLE ADS

miércoles, 20 de abril de 2022

Comparando mongoose _id y cadenas

Tengo una aplicación node.js que extrae algunos datos y los pega en un objeto, como este:

var results = new Object();
User.findOne(query, function(err, u) {
results.userId = u._id;
}

Cuando hago un si/entonces basado en esa ID almacenada, la comparación nunca es cierta:

if (results.userId == AnotherMongoDocument._id) {
console.log('This is never true');
}

Cuando hago un console.log de las dos identificaciones, coinciden exactamente:

User id: 4fc67871349bb7bf6a000002 AnotherMongoDocument id: 4fc67871349bb7bf6a000002

Supongo que se trata de algún tipo de problema de tipo de datos, pero no estoy seguro de cómo convertir los resultados. ID de usuario a un tipo de datos que haga que la comparación anterior sea cierta y mi cerebro subcontratado (también conocido como Google) no ha podido ayudar.


Solución del problema

Mongoose usa el controlador nativo de mongodb, que usa el tipo de ID de objeto personalizado. Puede comparar ObjectID con el .equals()método. Con tu ejemplo, results.userId.equals(AnotherMongoDocument._id). El tipo ObjectID también tiene un toString()método, si desea almacenar una versión en cadena del ObjectID en formato JSON, o una cookie.

Si usa ObjectID = require("mongodb").ObjectID(requiere la biblioteca nativa de mongodb), puede verificar si results.userIdes un identificador válido con results.userId instanceof ObjectID.

Etc.

No hay comentarios.:

Publicar un comentario

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...