Nodo.js Mangosta.función js string to ObjectId


¿Hay una función para convertir una cadena en un objeto en el nodo usando mangosta? El esquema especifica que algo es un ObjectId, pero cuando se guarda desde una cadena, mongo me dice que sigue siendo solo una cadena. El _id del objeto, por ejemplo, se muestra como objectId("blah").

Author: JRPete, 2011-07-05

5 answers

Puedes hacerlo así:

var mongoose = require('mongoose');
var id = mongoose.Types.ObjectId('4edd40c86762e0fb12000003');
 291
Author: Kevin Dente,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-05 23:56:29

Puedes hacerlo así:

var mongoose = require('mongoose');
var _id = mongoose.mongo.BSONPure.ObjectID.fromHexString("4eb6e7e7e9b7f4194e000001");

EDITAR: El nuevo estándar tiene fromHexString en lugar de fromString

 10
Author: talentedmrjones,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-12 12:15:45

A juzgar por los comentarios, usted está buscando:

mongoose.mongo.BSONPure.ObjectID.isValid

O

mongoose.Types.ObjectId.isValid
 6
Author: A T,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-12 11:22:37
var mongoose = require('mongoose');
var _id = mongoose.mongo.ObjectId("4eb6e7e7e9b7f4194e000001");
 2
Author: steampowered,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-11 20:26:54

No pude resolver este método (es cierto que no busqué por mucho tiempo)

mongoose.mongo.BSONPure.ObjectID.fromHexString

Si su esquema espera que la propiedad sea de tipo ObjectId, la conversión es implícita, al menos este parece ser el caso en 4.7.8.

Sin embargo, podría usar algo como esto, lo que le da un poco más de flexibilidad:

function toObjectId(ids) {

    if (ids.constructor === Array) {
        return ids.map(mongoose.Types.ObjectId);
    }

    return mongoose.Types.ObjectId(ids);
}
 2
Author: Billy Jake O'Connor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-04 20:47:11