2016-08-07 16 views
0

Ich habe einen Code, derMeteor observeChanges(). Wie überprüft man die tatsächlichen Änderungen?

Trades.find().observeChanges({ 
    changed: function(id, fields) { 
     // do stuff 
    } 
}); 

wie folgt aussieht: Wo jeder Trades ein Array von Elementen hat innerhalb

TradesSchema = new SimpleSchema({ 
    // ... 
    items: { 
     type: [String] 
    }, 
    // ... 
}); 

Trades.attachSchema(TradesSchema); 

Diese Elemente manchmal sind Veränderungen sind, und ich möchte, um die Änderungen verfolgen. Der Code funktioniert gut, außer dass in fields alle Elemente zurückgegeben werden, nicht nur die Elemente, die geändert wurden.

Gibt es eine Möglichkeit zu sehen, welches Element genau geändert wurde, ohne die Struktur der Sammlung zu ändern?

+2

Es sieht aus wie das nicht schwer erreicht werden kann, indem 'observeChanges' seit seiner' changed' gibt immer die neuen Werte. Versuchen Sie 'observe' statt, die Sie sowohl zum Vergleich der neuen und alten Dokumenten gibt. – Season

Antwort

1

Dank @Season für den Hinweis!


observeChanges gibt nur die neuen Werte, also müssen Sie observe verwenden, da es sowohl die neuen als auch die alten Dokumente zurückgibt. Dann müssen Sie sie vergleichen, um zu sehen, was genau geändert wurde. ( See docs for observe on meteor.com)

Trades.find().observe({ 
    changed: function(newDocument, oldDocument) { 
     // compare newDocument to oldDocument to find out what has changed 
    } 
});