Avoir un peu de mal à faire fonctionner ma fonction Meteor upsert. Je suis assez nouveau (200 lignes de code) et j'ai quelques problèmes.
La collection continue à avoir des lignes supplémentaires insérées, plutôt que de simplement mettre à jour. Je passe les 30 dernières minutes à googler, mais je ne trouve aucun exemple que je puisse comprendre.
Voici mon code:
Values.upsert(
{
// Selector
source: "SourceOne",
currency: "USD"
},
{
// Modifier
value: res.data['data']['last']['value'],
time: Date.now(),
}
);
J'ai aussi essayé
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()
});
}
Et n'arrive toujours pas à comprendre.
Compris par essais et erreurs:
Values.upsert({
// Selector
source: "SourceOne",
currency: "USD"
}, {
// Modifier
$set: {
value: res.data['data']['last']['value'],
time: Date.now() // no comma needed here
}
});
Ce qui précède ne fonctionne pas pour les identifiants. Cela fonctionne pour moi (avec la même syntaxe que update):
Values.upsert(id,
{
// Modifier
$set: {
value: res.data['data']['last']['value'],
time: Date.now() // no need coma here
}
}
);
Essaye ça:
values.update({"id":id},
$set: {
value: res.data['data']['last']['value'],
time: Date.now() // no need coma here
},
{ upsert: true }
);