Как использовать Meteor Upsert
У меня немного проблемы с работой моей функции Meteor upsert. Я довольно (200 строк кода) новый, и у меня проблемы.
В коллекции продолжается добавление дополнительных строк, а не просто обновление. Я трачу последние 30 минут на поиски в Google, но я не могу найти примеров, которые я могу понять.
Здесь мой код:
Values.upsert(
{
// Selector
source: "SourceOne",
currency: "USD"
},
{
// Modifier
value: res.data['data']['last']['value'],
time: Date.now(),
}
);
Я также пробовал
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()
});
}
И все еще не может показаться, что это понятно.
Ответы
Ответ 1
Выяснил это с помощью проб и ошибок:
Values.upsert({
// Selector
source: "SourceOne",
currency: "USD"
}, {
// Modifier
$set: {
value: res.data['data']['last']['value'],
time: Date.now() // no comma needed here
}
});
Ответ 2
Вышеупомянутое не работает для идентификаторов. Это работает для меня (с тем же синтаксисом, что и обновление):
Values.upsert(id,
{
// Modifier
$set: {
value: res.data['data']['last']['value'],
time: Date.now() // no need coma here
}
}
);
Ответ 3
Попробуй это:
values.update({"id":id},
{ $set: {
value: res.data['data']['last']['value'],
time: Date.now() // no need coma here
} },
{ upsert: true }
);
Ответ 4
Mongo.Collection#upsert(selector, modifier, [options], [callback])
АРГУМЕНТЫ
селектор: Mongo Selector, Object ID или String Указывает, какой документы для изменения
Модификатор: Mongo Modifier Указывает, как изменить документы
обратный вызов: функция необязательна. Если присутствует, вызывается с объектом ошибки как первый аргумент и, если нет ошибок, количество затронутых документов как второй.
ОПЦИИ: multi Boolean True для изменения всех соответствующих документов; ложь к изменить только один из соответствующих документов (по умолчанию).
https://docs.meteor.com/api/collections.html#Mongo-Collection-upsert