2016-09-05 2 views
0

Ich möchte zuletzt in minimongo eingefügt werden. zur Zeit auf diese Weise ich tue (Code auf Client-Seite):Wie bekomme ich den letzten Eintrag in Meteor mongo?

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]); 
     } 
    ); 
    } 

Ausgabe in der Konsole:

undefined 
t6Lwrv4od854tE7st 
[] 

Wie Sie sehen können, wenn ich auf neu erstellte Seite umleiten, ich kann nicht finden ein Buch, aber in Mongo Shell sehe ich deutlich, dass die Platte hinzugefügt wurde. Sollte ich auf ein Ereignis wie BookCollection.insert(this.book).then(. . .) warten? Bitte helfen Sie mir!)

Wenn ich zurück zur "alle Bücher Seite" gehe, sehe ich neue Aufnahme und kann klicken, alles funktioniert normal, keine Fehler.

Im/Buch-Controller:

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

Wie laden Sie das Dokument in Ihre/Buch-Komponente? Siehst du den Fehler? –

+0

Ich sehe keine Fehler ... Das Problem ist, dass gerade nach dem Einfügen kann ich keinen neuen Datensatz finden ... –

Antwort

1

Dies ist wahrscheinlich ein Timing-Problem. Die _id wird höchstwahrscheinlich sofort erstellt und zurückgegeben, während die tatsächlichen Daten in die Datenbank eingefügt werden, was erklären würde, warum eine find() sofort _id als leeres Array zurückkommt.

Gibt es einen Grund, warum Sie Ihre Einfügung vom Client machen, anstatt sie auf dem Server auszuführen und eine Meteor-Methode zu verwenden, um sie zu initiieren? Ein Wechsel zu diesem Ansatz könnte Ihr Problem lösen.

Verwandte Themen