2013-10-24 19 views
26

Mam problem z uruchomieniem funkcji upiększania Meteor. Jestem dość (200 linii kodu) nowy i mam trochę problemów.Jak korzystać z Meteor Upsert

W kolekcji nadal są wstawiane dodatkowe wiersze, a nie tylko aktualizowane. Przez ostatnie 30 minut googlowałem, ale nie mogę znaleźć żadnych przykładów, które mogę zrozumieć.

Oto mój kod:

Values.upsert(
    { 
     // Selector 
     source: "SourceOne", 
     currency: "USD" 
    }, 
    { 
     // Modifier 
     value: res.data['data']['last']['value'], 
     time: Date.now(), 
    } 
); 

Próbowałem zostały również

if(Values.find(
     {},{fields: {'source':"SourceOne", 'currency': "USD"}} 
    )) { 
    Values.update(
     { 
     source: "SourceOne", 
     currency: "USD" 
     }, 
     { 
     value: res.data['data']['last']['value'], 
     time: Date.now() 
     } 
    ); 
    } else { 
    console.log('blah'); 
    Values.insert({ 
     source: "SourceOne", 
     currency: "USD", 
     value: res.data['data']['last']['value'], 
     time: Date.now() 
    }); 
    } 

I wciąż nie wydają się rysunek.

+0

Zdobione metodą prób i błędów ... znaleziono rozwiązanie powyżej –

+0

Zawsze należy dodawać materiały jako odpowiedź odpowiedzi w polach poniżej. –

+6

@MikeGraf Nie mogłem, kiedy po raz pierwszy dołączyłem do Stack, ponieważ nie miałem dość reputacji, by publikować odpowiedzi lub coś takiego. Zrobiłem to teraz –

Odpowiedz

43

Zdobione metodą prób i błędów:

Values.upsert({ 
    // Selector 
    source: "SourceOne", 
    currency: "USD" 
}, { 
    // Modifier 
    $set: { 
     value: res.data['data']['last']['value'], 
     time: Date.now() // no comma needed here 
    } 
}); 
+2

+1 dla komentarzy '// Selector' i' // Modifier'. Dopóki nie zobaczyłem tych, których naprawdę nie rozumiem, tutaj ... – zipzit

+0

Dzięki za to! Pewnie, że oficjalna dokumentacja podała przykłady. –

11

Powyższe nie działa dla identyfikatorów. Działa to dla mnie (o tej samej składni jako update):

Values.upsert(id, 
{ 
    // Modifier 
    $set: { 
     value: res.data['data']['last']['value'], 
     time: Date.now() // no need coma here 
    } 
} 
); 
+0

działa dla mnie :) –

0

Spróbuj tego:

values.update({"id":id}, 
     $set: { 
      value: res.data['data']['last']['value'], 
      time: Date.now() // no need coma here 
     }, 
     { upsert: true } 
    );