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.userId
es un identificador válido con results.userId instanceof ObjectID
.
Etc.
No hay comentarios.:
Publicar un comentario