it-swarm.com.de

Node.js Mongoose.js Zeichenfolge für die ObjectId-Funktion

Gibt es eine Funktion, um einen String mit mongoose in eine objectId in node zu verwandeln? Das Schema gibt an, dass es sich bei einem Objekt um eine Objekt-ID handelt. Wenn es jedoch aus einer Zeichenfolge gespeichert wird, gibt mongo an, dass es sich nur um eine Zeichenfolge handelt. Die _ID des Objekts wird beispielsweise als objectId("blah") angezeigt.

140
JRPete

Du kannst es so machen:

var mongoose = require('mongoose');
var id = mongoose.Types.ObjectId('4edd40c86762e0fb12000003');
345
Kevin Dente

Du kannst es so machen:

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

BEARBEITEN: Neuer Standard hat fromHexString anstatt fromString

9
talentedmrjones
var mongoose = require('mongoose');
var _id = mongoose.mongo.ObjectId("4eb6e7e7e9b7f4194e000001");
5
steampowered

Nach den Kommentaren zu urteilen, suchen Sie nach:

mongoose.mongo.BSONPure.ObjectID.isValid

Oder

mongoose.Types.ObjectId.isValid
5
A T

Ich konnte diese Methode nicht auflösen (zugegebenermaßen habe ich nicht lange gesucht)

mongoose.mongo.BSONPure.ObjectID.fromHexString

Wenn Ihr Schema erwartet, dass die Eigenschaft vom Typ ObjectId ist, ist die Konvertierung implizit, zumindest scheint dies in 4.7.8 der Fall zu sein.

Sie könnten jedoch so etwas verwenden, was etwas mehr Flexibilität verleiht:

function toObjectId(ids) {

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

    return mongoose.Types.ObjectId(ids);
}
4