Я пытаюсь создать простую функцию поиска в SailsJS (бета), используя ORM ватерлинии для обработки данных. Моя функция в моем контроллере выполняет поиск, используя предопределенный метод find() для ватерлинии.
Интересно, можно ли отправить шаблон SQL-regexp в функцию find(), чтобы она извлекала всех пользователей, имеющих соответствующий REGEXP?
Мой метод поиска в моем контроллере содержит это (кроме функции регулярного выражения, которую я прошу):
// Replace any spaces with SQL regex wildcards
var regexp = req.body.search.replace(' ', '*');
// Show found users
User.find()
.where({
or: [
{username: { contains: req.body.search }},
{email: { contains: req.body.search }},
{fullName: { regexp: regexp }}
]
}).exec(function(err, users){
if (err){
return res.send(403, 'Failed to find users' + JSON.stringify(err));
}
res.view('userlist', {
users: users
});
});
Атрибут fullName
определяется как метод экземпляра в атрибутах и, вероятно, не доступен для поиска. Однако есть ли способ сделать приличный поиск по именам?
Это выдержка из моей модели пользователя:
module.exports = {
attributes: {
firstName: {
type: 'string'
},
lastName: {
type: 'string'
},
fullName: function(){
return this.firstName + ' ' + this.lastName;
},
(...some more attributes, as well as email and username...)
}
}
Как заставить метод find()
работать с регулярным выражением SQL? Моя цель состоит в том, чтобы поиск "Hans Eikerol" отображал "Hans Martin Eikerol" в наборе результатов.