2013-10-24 15 views
26

Avere un po 'di problemi nel far funzionare la mia funzione di scatto di Meteor. Sono abbastanza (200 linee di codice) nuove, e sto avendo un po 'di problemi.Come utilizzare Meteor Upsert

La raccolta continua a inserire righe aggiuntive, anziché solo aggiornare. Trascorro gli ultimi 30 minuti su google, ma non riesco a trovare alcun esempio che possa capire.

Ecco il mio codice:

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

Ho anche provato

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

E ancora non riesco a capirlo.

+0

capito attraverso la soluzione di tentativi ed errori ... postato sopra –

+0

Si dovrebbe sempre inviare materiale risposta come risposte nelle caselle sottostanti. –

+6

@MikeGraf Non sono stato in grado di farlo quando ho iniziato a partecipare a Stack poiché non avevo abbastanza reputazione per pubblicare risposte o qualcosa del genere. L'ho fatto ora –

risposta

43

capito attraverso tentativi ed errori:

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

+1 per i commenti '// Selector' e' // Modifier'. Fino a quando non ho visto quelli che non capivo davvero i concetti qui ... – zipzit

+0

Grazie per questo! Certo, la documentazione ufficiale ha fornito esempi. –

11

È possibile che questo non funziona per gli ID. Questo funziona per me (con la stessa sintassi di aggiornamento):

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

funziona per me :) –

0

Prova questo:

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