2016-09-14 20 views
0

Ich versuche, eine Zeichenfolge zu ObjectId konvertierenzu ObjectId Konvertieren von String wird in Mungo andernfalls 4.6.0

var body={}; 
var objId="57b40595866fdab90268321e"; 
body.id=mongoose.Types.ObjectId(objId); 

myModel.collection.insert(body,function(err,data){ 
//causing err; 
}); 

der obige Code funktioniert prima mit, wenn Mungo 4.4.16 verwendet wird, aber wenn ich meine aktualisieren Mungo zur neuesten Version (4.6.0) tritt dann ein Problem auf.

Err

object [ 
    { 
    "_bsontype":"ObjectID", 
    "id:{"0":87,"1":180,"2":5,"3":235,"4":134,"5":111,"6":218,"7":185,"8":2,"9":104,"10":50,"11":111} 
} 
] 
is not a valid ObjectId 

Antwort

2

Der richtige Weg, um neue Dokument einzufügen ist-

var newDocument = new myModel({ 
    _id: mongoose.Types.ObjectId("57b40595866fdab90268321e") 
}); 

newDocument.save(); 

In Sie Case- Es funktioniert nicht mehr, weil die Unterschiede zwischen den Versionen von Mungo und native Treiber mongo.

obwohl Sie in der Lage sind diese oben durch das Beispiel auszuführen, oder, wenn Sie noch insert verwenden möchten, können Sie die myModel.insertMany (durch Objekt statt Array vorbei)

hier http://mongoosejs.com/docs/api.html#model_Model.insertMany

0

ich habe nicht die Zeit, es zu Spike, aber wenn ich das richtig ist id ein einfacher String erinnern und _id ist die ObjectId, dh entweder

body.id="57b40595866fdab90268321e" 

oder

body._id=mongoose.Types.ObjectId("57b40595866fdab90268321e"); 

Das heißt, es dass spezifische ID sein? Wenn nicht, können Sie new myModel() verwenden und eine ID wird automatisch erstellt.

Verwandte Themen