2012-02-17 11 views
15

Próbuję podążać za Sequelize tutorial on their website.Korzystanie z dynamicznych parametrów wyszukiwania z Sequelize.js

Osiągnąłem następujący wiersz kodu.

Project.findAll({where: ["id > ?", 25]}).success(function(projects) { 
    // projects will be an array of Projects having a greater id than 25 
}) 

Gdybym dostosować go lekko następująco

Project.findAll({where: ["title like '%awe%'"]}).success(function(projects) { 
    for (var i=0; i<projects.length; i++) { 
     console.log(projects[i].title + " " + projects[i].description); 
    } 
}); 

wszystko działa poprawnie. Jednak gdy próbuję ustawić parametr dynamiczny w następujący sposób:

Project.findAll({where: ["title like '%?%'", 'awe']}).success(function(projects) { 
    for (var i=0; i<projects.length; i++) { 
     console.log(projects[i].title + " " + projects[i].description); 
    } 
}); 

Nie powoduje to już wyświetlenia żadnych wyników. Jak mogę to naprawić?

+0

znalazłem sformułowanie swoje pytanie trochę mylące, więc to zredagowałem. Mam nadzieję, że zrozumiałem poprawnie, proszę, cofnij to, jeśli myślisz, że spieprzyłem. –

Odpowiedz

19

myślę, że byłoby to zrobić tak:

Project.findAll({where: ["title like ?", '%' + 'awe' + '%']}).success(function(projects) { 
    for (var i=0; i<projects.length; i++) { 
     console.log(projects[i].title + " " + projects[i].description); 
    } 
}); 

Więc jeśli robią to ze zmiennej rzeczywistej chcesz użyć:

Project.findAll({where: ["title like ?", '%' + x + '%']}).success(function(projects) { 
    for (var i=0; i<projects.length; i++) { 
     console.log(projects[i].title + " " + projects[i].description); 
    } 
}); 
0

To może być czystsze, aby wykorzystać Sequelize .Utils.format funkcji

4

Chciałbym zrobić to w ten sposób:

Project.findAll({where: {title: {like: '%' + x + '%'}, id: {gt: 10}}).success(function(projects) { 
    for (var i=0; i<projects.length; i++) { 
    console.log(projects[i].title + " " + projects[i].description); 
    } 
}); 

W ten sposób można mieć ładnie więcej GDZIE clausas

17

Teraz na Sequelize można spróbować

{ where: { columnName: { $like: '%awe%' } } } 

Zobacz http://docs.sequelizejs.com/en/latest/docs/querying/#operators dla Zaktualizowana składnia

+0

Dobra uproszczona odpowiedź. Szybka uwaga dla nowych użytkowników, tytuł to nazwa kolumny, w której chcesz znaleźć dopasowanie. – JnL

+0

Dzięki @JMM naprawiłem to;) –

Powiązane problemy