2016-06-12 5 views
1

で1つのクエリで更新する方法を、私はそれが唯一のデータベース操作を必要としthis-SQLで喫水線

UPDATE user SET count=count+1 WHERE id=userID 

のようなインライン計算でフィールドを更新することができます。

しかし、私の唯一の選択肢は、ユーザーを照会し、値を変更し、データベースに保存することです。

User.findOne(userID).exec(function(err, user) { 
    if(user) { 
     user.count++; 
     user.save(function(err) { 
      if(!err) console.log("success"); 
     }); 
    } 
}); 

これは、データベースアクセスが2倍必要です。オーバーヘッドをどのように減らすことができますか?

+0

それが唯一の方法だが、私はそれは大したことではないと思います。複数のエントリを見つけて、一度に複数のユーザを保存することができます。 – Makah

答えて

1

水路でネイティブクエリーを実行できるので、そのルートに行くことができます。

User.query("query string here", function (err,result){//Handle errors and result here});

http://sailsjs.org/documentation/reference/waterline-orm/models/query

+0

しかし、実際には水の目的を殺します。データベースシステムを変更したいのですが? – Dipu

+1

ウォーターラインは、実行可能なすべての形式のクエリー実行に対応することはできません。さまざまなレベルの成熟度を持つさまざまなデータベースに接続するためのアダプターの性質により、これらの問題が常に発生します。彼らのウェブサイトにセイル状態を含むインラインウォーターラインはネイティブコールとして.queryから離れて恥ずかしがるのではないかもしれませんhttps://github.com/balderdashy/waterline-docs/blob/master/queries/query-methods.mdを確認してください。このリンクのコメントを照会してください。 – munkee

+0

私は今それを得る、ありがとう。私はネイティブクエリが私の場合の唯一のオプションだと思います。 – Dipu