2015-12-13 54 views
0

我有一個數據庫的文章與幾列,並希望能夠搜索titledescriptionSequelize - 如何搜索多個列?

目前,我有:

Article.findAll({ 
    where: { 
    title: { like: '%' + searchQuery + '%' } 
    } 
}); 

如何我也搜索說明呢?

我已閱讀the sequelize documentation,即使在Complex filtering/OR/NOT queries部分,但這些示例似乎只是解釋了在一列中搜索。

回答

4
Article.findAll({ 
    where: { 
    title: { like: '%' + searchQuery + '%' }, 
    description: { like: '%' + searchQuery2 + '%' } 
    } 
}); 

以上將確保title包括searchQuerydescription包括searchQuery2。不過,若你想獲得結果回來時的物品包括兩個中的一個,下面的查詢應該工作:

Article.findAll({ 
    where: { 
    $or: [ 
    title: { like: '%' + searchQuery + '%' }, 
    description: { like: '%' + searchQuery2 + '%' } 
    ] 
    } 
}); 
0

你的問題是第一次聽說sequelize.js,但我看着DOCO,發現這個:

Project.findOne({ 
    where: { 
    name: 'a project', 
    $or: [ 
     { id: [1,2,3] }, 
     { id: { $gt: 10 } } 
    ] 
    } 
}) 

Project.findOne({ 
    where: { 
    name: 'a project', 
    id: { 
     $or: [ 
     [1,2,3], 
     { $gt: 10 } 
     ] 
    } 
    } 
}) 

的代碼代碼片段都將產生如下:

SELECT * 
FROM `Projects` 
WHERE (
    `Projects`.`name` = 'a project' 
    AND (`Projects`.`id` IN (1,2,3) OR `Projects`.`id` > 10) 
) 
LIMIT 1; 

以上那些實施例中的部分給出了各種子句允許包括$and$or

Project.findAll({ 
    where: { 
    id: { 
     $and: {a: 5}   // AND (a = 5) 
     $or: [{a: 5}, {a: 6}] // (a = 5 OR a = 6) 
    ... etc 
+0

感謝您的答覆,但糾正我,如果我錯了,但做到這一點仍然不僅搜索一列? (在本例中爲'Projects.id') – waffl

+0

我認爲這些加入者可以在字段之間的'where'內使用。看到這些附近的'$ not example'用於兩個不同的列。 – Turophile