2014-04-09 67 views
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); 
     }); 

但它給了我一個錯誤對象沒有名爲findByLocationLike的方法。我做了

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

有趣的是,我看到一個名爲findByLocationLike的方法。我很困惑。任何人都有任何想法如何在sails waterline中加入多個findByLike查詢。

回答

1

你可以這樣做:

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

這將返回所有與居住在torronto名哈利用戶。

更多信息:

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

+0

這不是我想要的。我想用Like來搜索。因爲當用戶搜索時,我們需要提供匹配的內容。 –

+1

我覺得你的麪包車在我的答案「找到」與「findlike」 –

+0

其實你的一個將工作,如果我想加入基於AND子句的名稱和位置,但在我的情況下,我想要使用OR加入他們。然而,我的問題是我沒有表達,這是我的錯,所以我會接受你的答案。請在你的回答中編輯User.find - > User.findlike;我會接受它。 –

3

所以,如果我嘗試基於AND條件加入名稱和位置,詹姆斯的回答會工作。但在我的情況下,我在這些之間使用了OR子句。

因此,通過水線源代碼後,我發現下面的黑客做我想做的事情。

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

這將給我所有的用戶名稱與任何名稱與名稱或位置與位置匹配的用戶。