如何使用Meteor Upsert

Var*_*ain 32 mongodb meteor

让我的Meteor upsert功能正常工作有点麻烦.我相当(200行代码)新的,我有点麻烦.

该集合继续插入其他行,而不仅仅是更新.我花了30分钟的谷歌搜索,但我找不到任何我能理解的例子.

这是我的代码:

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

我也试过了

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()
    });
  }
Run Code Online (Sandbox Code Playgroud)

而且似乎还无法弄明白.

Var*_*ain 48

通过反复试验弄清楚:

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

  • 对于`// Selector`和`// Modifier`注释+1.直到我看到那些我真的不明白这里的概念...... (2认同)

小智 13

以上内容不适用于ID.这适用于我(使用与更新相同的语法):

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