2016-09-05 11 views
0

私は最後にミニンゴの項目を挿入したいです。現在、私はこの方法でそれをやっている(クライアント側のコード):あなたが見ることができるように私は、新しく作成されたページにリダイレクトするときMeteor mongoで最後に挿入されたレコードを取得する方法は?

undefined 
t6Lwrv4od854tE7st 
[] 

すると、私は見つけるカント:コンソールで

addBook() 
    { 
    BookCollection.insert(
     this.book , (err , insertedBook_id)=> 
     { 
     this.book_saved = true; 
     console.group('Output:') 
     console.log(err); 
     console.log(insertedBook_id); 
     console.log(
      BookCollection.find({_id: insertedBook_id}) 
      .fetch() 
     ); 
     console.groupEnd(); 
     //this.router.navigate(['/book', insertedBook_id]); 
     } 
    ); 
    } 

出力しかし、mongoシェルでは、明らかにそのレコードが追加されていることがわかります。 BookCollection.insert(this.book).then(. . .)のようなイベントを待つべきですか?助けてください!)

「すべての書籍のページ」に戻ると、新しいレコードが表示され、クリックすると正常に動作し、エラーは発生しません。 /ブックコントローラで

ngOnInit() 
    { 
    this.sub = this.curr_route.params.subscribe(
     params=> 
     { 
     this.book = BookCollection.findOne(params[ '_id' ]); // .fetch() == [] 

     //if(!this.book) 
     // this.router.navigate(['/books']); 

     Meteor.subscribe(
      'book' , params[ '_id' ] ,()=> 
      { 
      this.book = BookCollection.findOne(params[ '_id' ]); 
      } , true 
     ) 

     console.groupCollapsed('BookDetailsCardComponent log data:') 
     console.group('Book:'); 
     console.log(this.book); 
     console.groupEnd(); 
     console.groupEnd(); 

     } , true 
    ); 

    } 
+0

どのようにドキュメントを/ bookコンポーネントに読み込んでいますか?それはあなたがエラーを見ている場所ですか? –

+0

私は何かエラーが表示されない...問題は、挿入直後に私は新しいレコードを見つけることができません... –

答えて

1

これはおそらく、タイミングの問題です。 _idは、実際のデータがデータベースに挿入されている間に作成され、即座に返される可能性があります。そのため、すぐに_idfind()を空の配列に戻す理由が説明されます。

サーバー上で挿入を行い、Meteorメソッドを使用して挿入を開始するのではなく、クライアントから挿入を行う理由はありますか?この方法に変更すると、問題が解決する可能性があります。

関連する問題