2016-05-20 9 views
0

私のSails.jsアプリケーションでウォーターラインを使用してmongoデータベースを照会しています。私はこのような複数のクエリパラメタに基づいてレコードを得ることができます:Sails.jsウォーターラインの更新方法

Model.findOne({param1: params[0], param2: params[1]})... 

それは素晴らしいです。私はthe docs for .update()を見てそれをコピーしましたが、動作していません。私はまだ2つのパラメータに基づいてレコードを更新する必要があるので、これは私の更新機能である:

Model.update(
    [{param1: params[0]}, {param2: params[1]}], 
    [{field1: update[0]}, {field2: update[1]}] 
).exec(function(err, updatedModel) { 
    console.log(err); 
    console.log(updatedModel); 
}); 

私が読んだものから、updateメソッドの最初の引数が持つオブジェクトまたはオブジェクトの配列であるように見えますレコードを更新するために照会している値。 2番目のパラメータは更新されたフィールドです。

私はエラーまたはupdatedModelを取得していませんが、これはおそらく、要件に合ったmongoのModelテーブルからオブジェクトを見つけられないことを意味します。しかし、私はオブジェクトが存在し、パラメータが正しいことを知っています。助言がありますか?

また、更新機能付きのhere's a gistもあります。

答えて

1

updateのパラメータは、配列ではないオブジェクトです。

Model.update(
    {param1: params[0], param2: params[1]}, //this is find 
    {field1: update[0], field2: update[1]} // this is update 
).exec(function(err, updatedModel) { 
    if(err) 
     console.error(err); 
    console.log(updatedModel); 
}); 
+0

私はこれをしようとしますが、ドキュメントは、検索条件のために受け入れられたデータ型が '{}、[{}]、文字列、int'と更新されたレコードは{[、種類が' {}は受け入れられていると言います}] '。 – pjlamb12

+0

したがって、文書によって、findパラメータとupdateパラメータにオブジェクトの配列を渡すことができるように見えても、実際にはできません。または少なくともそれは動作しませんでした。しかし、ここの答えはうまくいった。 – pjlamb12

+0

セイルのドキュメントには多くの間違いがあります。今はコミュニティによって構築されています。 – Bonanza

関連する問題