1

Sailsjs を使用しており、ユーザーの名前や場所に基づいて検索クエリを作成しようとしています。今、次のようなクエリを作成しています

   var name = "Harry", 
       location = "Toronto";

   User.findByNameLike( name )
       .exec( function( err, tags ){
            return callbackTag ( null, tags );
       } );

これで、findByLocationLike タグを追加できます。私は試した

    User.findByNameLike( name )
    User.findByLocationLike( location )
       .exec( function( err, tags ){
            return callbackTag ( null, tags );
       } );

しかし、エラー Object has no method named findByLocationLike. が表示されました。やった

    console.log( User.findByNameLike( name ) );

興味深いことに、findByLocationLike という名前のメソッドがあります。私は本当に混乱しています。セイルズウォーターラインで複数のfindByLikeクエリに参加する方法は誰でも知っています。

4

2 に答える 2

4

したがって、AND条件に基づいて名前と場所を結合しようとすると、ジェームズの答えが機能します。ただし、私の場合、それらの間に OR 句を使用していました。

したがって、ウォーターラインのソースコードを調べた後、私が望むことを行うための次のハックを見つけました。

User.find({ 
           or :[ 
                { like: { name: '%'+name+'%' } }, { like: { location : '%'+location+'%' } } 
               ] 
           } , function ( err, users ){
        // some code here
    });

これにより、名前と名前または場所と場所のいずれかと名前が一致するすべてのユーザーが得られます。

于 2014-04-10T18:26:15.520 に答える
1

できるよ :

User.findlike({name: name, location: location}).exec(console.log);

これにより、トロントに住むハリーという名前のすべてのユーザーが返されます。

より詳しい情報:

http://sailsjs.org/#!documentation/models

于 2014-04-10T09:08:56.240 に答える