2016-09-22 2 views
0

Ich bin auf der Suche nach etwas Hilfe mit _id in Mongo. Ich möchte manuell einen ObjectId() Verweis festlegen, aber ich kann es nicht tun. Ich habe den Code in der offiziellen Mongo-Dokumentation ausgecheckt und in meine App eingefügt, scheitere aber nicht. Wenn jemand etwas Einblick geben kann, würde ich es nicht zu schätzen wissen. Die Variable original_id ist das, was ich versuche zu setzen. Hier ist ein Link zu den Mongo Docs - https://docs.mongodb.com/manual/reference/database-references/#document-references und der Code ist unten. Jede Hilfe/Einsicht wäre großartig.Manuelle Referenz - ObjectId()

Template.postNewJob.events({ 
     'submit form': function(event) { 
      event.preventDefault(); 
      original_id = ObjectId(); 
      var position = $('[name=position]').val(); 
      var jobDescription = $('[name=jobDescription]').val(); 
      var createdAt = new Date(); 
      var createdBy = Meteor.userId(); 
      postedJobs.insert({ 
       _id: original_id, 
       position: position, 
       jobDescription: jobDescription, 
       createdAt: createdAt, 
       createdBy: createdBy 
      }); 
      Router.go('dashboard'); 
     } 
    }); 
+0

Was bedeutet "ich kann es nicht tun"? Fügen Sie den Fehler hinzu, wenn Sie etwas erhalten oder erklären, was das Ergebnis ist, das Sie erhalten. –

+0

@AminJ - "Ich kann es nicht tun" bedeutet, wenn ich etwas wie original_id = ObjectId() deklariere; - Es wird die Variable nicht mit einer neuen Objekt-ID versehen. Außerdem ist der Fehler, den ich erhalte, "Uncaught ReferenceError: ObjectId ist nicht definiert" - danke. – Mike

Antwort

0

Ich konnte es herausfinden. Ich musste es auf folgende Weise einstellen: var original_id = new Meteor.Collection.ObjectID(). ValueOf();

0
> meteor shell 
Welcome to the server-side interactive shell! 

Tab completion is enabled for global variables. 

Type .reload to restart the server and the shell. 
Type .exit to disconnect from the server and leave the shell. 
Type .help for additional help. 

> Coll = new Mongo.Collection('coll') 

Standardeinsatz wird Meteor _id

> Coll.insert({str: "blah"}) 
'JTeBKdTErXWQyedMN' 

Insert erzeugen Gang OBJECTID als _id Objekt

> Coll.insert({_id: new Meteor.Collection.ObjectID(), str: "blah"}) 
{ [String: '8dbfd702d76d6152685e2f66'] _str: '8dbfd702d76d6152685e2f66' } 

Insert mit Benutzer konstruiert String als _id

> Coll.insert({_id: "1234", str: "blah"}) 
'1234' 

Natürlich wenn du cr eate Ihre eigenen _id Werte, sind Sie verantwortlich für die _ids Gewährleistung in der Sammlung noch nicht vorhanden sind, oder Ihre Einsätze werden abgelehnt:

> Coll.insert({_id: "1234", str: "blah"}) 
WriteError({"code":11000,"index":0,"errmsg":"E11000 duplicate key error index: meteor.coll.$_id_ dup key: { : \"1234\" }","op":{"_id":"1234","str":"blah"}}) 
... more stack trace follows 

Und im Anschluss an diese Ihre Sammlung wie folgt aussieht:

> Coll.find({}).fetch() 
[ { _id: 'JTeBKdTErXWQyedMN', str: 'blah' }, 
    { _id: { [String: '8dbfd702d76d6152685e2f66'] _str: '8dbfd702d76d6152685e2f66' }, 
    str: 'blah' }, 
    { _id: '1234', str: 'blah' } ] 

> Coll.findOne('JTeBKdTErXWQyedMN') 
{ _id: 'JTeBKdTErXWQyedMN', str: 'blah' } 

> Coll.findOne('1234') 
{ _id: '1234', str: 'blah' } 

> Coll.findOne(new Meteor.Collection.ObjectID('8dbfd702d76d6152685e2f66')) 
{ _id: { [String: '8dbfd702d76d6152685e2f66'] _str: 8dbfd702d76d6152685e2f66' }, str: 'blah' }