2016-09-30 3 views
0

Я конвертирую Mongo.Cursor в массив с использованием fetch() в Tracker.autorun и назначая его songsArray. Но каждый раз, когда основные базы данные меняются (реактивно), я вижу повторяющиеся значения в songsArrayMeteor Mongo.Cursor возвращает повторяющиеся строки в Tracker.autorun

private songsArray:Array<any>; 
songsCursor:Mongo.Cursor<any>; 

//...Some code here 
ngOnInit():any { 
//... Some code here 

    this.songsCursor = Songs.find(); 
    Tracker.autorun(() => { 
     this.songsArray = []; 
     this.songsArray = this.songsCursor.fetch(); 
    }); 
} 

Почему это происходит, и если я предполагаю, что я делаю это не так, то, что это правильный способ преобразовать курсоры в массив в Tracker.autorun?

ответ

0

В конструкторе вам нужно сделать что-то вроде этого:

$reactive(this).attach($scope); 

// Subscribe to collections here: 
    this.subscribe('songs'); 

    this.helpers({ 
     songs:() => Songs.find() 
    }); 

и вы найдете песни является массив, как вы хотите

+0

Я нахожусь на угловой 2 так $ объема и т.д .. не будет работать. Также я использую угловые шаблоны вместо лезвия. – rahulserver

+0

Мои извинения, это код, который работает с угловым 1.5, и должен быть применим в концепции к угловому 2, за исключением ссылки на $ scope. Дело в том, что если вы подписываетесь на коллекцию, вам не нужно беспокоиться о Tracker. Вы можете использовать getReactively для переменной в вашем помощнике, чтобы гарантировать, что сбор извлекается реактивно. – Mikkel

Смежные вопросы