Existe-t-il une fonction permettant de transformer une chaîne en objectId dans un nœud à l'aide de mangouste? Le schéma spécifie que quelque chose est un ObjectId, mais lorsqu'il est sauvegardé à partir d'une chaîne, mongo me dit qu'il ne s'agit toujours que d'une chaîne. Le _id de l'objet, par exemple, est affiché sous la forme objectId("blah")
.
Vous pouvez le faire comme suit:
var mongoose = require('mongoose');
var id = mongoose.Types.ObjectId('4edd40c86762e0fb12000003');
Vous pouvez le faire comme ça:
var mongoose = require('mongoose');
var _id = mongoose.mongo.BSONPure.ObjectID.fromHexString("4eb6e7e7e9b7f4194e000001");
EDIT: La nouvelle norme a fromHexString plutôt que fromString
var mongoose = require('mongoose');
var _id = mongoose.mongo.ObjectId("4eb6e7e7e9b7f4194e000001");
A en juger par les commentaires, vous recherchez:
mongoose.mongo.BSONPure.ObjectID.isValid
Ou
mongoose.Types.ObjectId.isValid
Je ne pouvais pas résoudre cette méthode (certes je n'ai pas cherché longtemps)
mongoose.mongo.BSONPure.ObjectID.fromHexString
Si votre schéma s'attend à ce que la propriété soit de type ObjectId, la conversion est implicite, du moins cela semble être le cas dans 4.7.8.
Vous pouvez utiliser quelque chose comme ceci cependant, ce qui donne un peu plus de flexibilité:
function toObjectId(ids) {
if (ids.constructor === Array) {
return ids.map(mongoose.Types.ObjectId);
}
return mongoose.Types.ObjectId(ids);
}