2016-09-22 2 views
0

Я ищу помощь с _id в Mongo. Я хочу вручную установить ссылку ObjectId(), но я не могу этого сделать. Я проверил код в официальной документации mongo и вставил его в свое приложение, но не смог. Если кто-то может дать некоторое представление, я бы оценил его. Переменная original_id - это то, что я пытаюсь установить. Вот ссылка на документы mongo - https://docs.mongodb.com/manual/reference/database-references/#document-references и код ниже. Любая помощь/проницательность будет замечательной.Manual Reference - 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

Что значит «я не могу это сделать» означает? Добавьте ошибку, если вы ее получите или объясните, какой результат вы получаете. –

+0

@AminJ - «Я не могу этого сделать» означает, если я объявляю что-то вроде original_id = ObjectId(); - он не будет устанавливать переменную с новым идентификатором объекта. Кроме того, ошибка, которую я получаю, - «Uncaught ReferenceError: ObjectId не определен» - спасибо. – Mike

ответ

0

Я смог понять это. Мне нужно было установить его следующим образом: 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') 

По умолчанию вставки, Метеор будет генерировать _id

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

Вставки прохождения ObjectId объект в _id

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

Вставка с помощью пользовательских сконструированных строк в _ID

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

Конечно если вы cr ЭАТС собственные _ID значения, вы несете ответственность за обеспечение _ids уже не существуют в коллекции, или ваши вставки будут отклонены:

> 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 

И после этого ваша коллекция выглядит следующим образом:

> 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' }