2016-09-22 9 views
0

Mongoで_idのヘルプを探しています。私は手動でObjectId()参照を設定したいが、私はそれを行うことはできません。私は公式のmongoのドキュメントでコードをチェックアウトし、私のアプリにそれを挿入したが失敗する。誰かが何らかの洞察力を提供できるなら、私はそれを感謝するでしょう。 original_id変数は、私が設定しようとしているものです。ここにmongoのドキュメントへのリンク - https://docs.mongodb.com/manual/reference/database-references/#document-referencesとコードは以下の通りです。どんな助けや洞察力も素晴らしいでしょう。マニュアルリファレンス - 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(); - 新しいオブジェクトIDで変数を設定することはありません。また、私が得ているエラーは "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({_id: new Meteor.Collection.ObjectID(), str: "blah"}) 
{ [String: '8dbfd702d76d6152685e2f66'] _str: '8dbfd702d76d6152685e2f66' } 

としてのObjectIDオブジェクトを渡す挿入

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

_id生成します挿入

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

_idとしてユーザー作成文字列を使用してあなたがcr独自の_idの値をeate、あなたは_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' }