35

Meteor の upsert 関数を機能させるのに少し問題があります。私はかなり (200 行のコード) 初心者で、少し問題があります。

コレクションは、単に更新するのではなく、追加の行を挿入し続けます。過去 30 分間グーグルで検索しましたが、理解できる例が見つかりません。

これが私のコードです:

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

そして、まだそれを理解することができないようです。

4

4 に答える 4

13

上記はIDには機能しません。これは私にとってはうまくいきます(更新と同じ構文で):

Values.upsert(id,
{
  // Modifier
  $set: {
      value: res.data['data']['last']['value'],
      time: Date.now() // no need coma here
  }
}
);
于 2015-01-22T00:49:50.263 に答える
1

これを試して:

values.update({"id":id},
       { $set: {
          value: res.data['data']['last']['value'],
          time: Date.now() // no need coma here
      } },
      { upsert: true }
    );
于 2017-11-20T07:29:07.520 に答える
0

Mongo.Collection#upsert(セレクター、修飾子、[オプション]、[コールバック])

引数

selector: Mongo Selector、Object ID、または String 変更するドキュメントを指定します

modifier: Mongo Modifier ドキュメントの変更方法を指定します

callback: 関数 オプション。存在する場合は、エラー オブジェクトを最初の引数として呼び出し、エラーがない場合は、影響を受けたドキュメントの数を 2 番目の引数として呼び出します。

OPTIONS: multi Boolean 一致するすべてのドキュメントを変更する場合は True。一致するドキュメントの 1 つだけを変更する場合は false (デフォルト)。

https://docs.meteor.com/api/collections.html#Mongo-Collection-upsert

于 2019-09-25T07:31:19.797 に答える