Подтвердить что ты не робот

Как использовать 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()
    });
  }

И все еще не может показаться, что это понятно.

4b9b3361

Ответ 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