#mysql #node.js #full-text-search #sails.js #waterline
#mysql #node.js #полнотекстовый поиск #sails.js #ватерлиния
Вопрос:
Я не думаю, что Waterline в настоящее время поддерживает эту функцию.
Итак, какие другие пакеты npm мне нужно установить, чтобы разрешить пользователю использовать полнотекстовый поиск в приложении?
Я хочу, чтобы мои пользователи вводили ключевые слова одним вводом, а затем сервер возвращал отфильтрованные данные из более чем одного столбца в более чем одной таблице, указанной мной в базе данных.
Мое веб-приложение использует Angular.js , Sails.js и MySQL.
Ответ №1:
Вы имеете в виду синтаксис «MATCH»?
Waterline предоставляет вам такие функции, как find(), findOne(), … они работают с любой базой данных, которую вы используете. Если вы хотите получить доступ к синтаксису, который не реализован в Waterline (часто потому, что он поддерживается не всеми базами данных), вы можете использовать query()
-function (postgresql / mysql) или native()
-function (mongodb):
Foomodel.query("SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('" var "')", function(err,result){
if(err){
return console.log(err);
}else{
console.log(result);
}
});
Смотрите: http://beta.sailsjs.org/#/documentation/reference/Models/Model-Methods/query.html
Комментарии:
1. Ваш ответ весьма вдохновляет при работе с простыми сценариями, хотя, кстати, следует избегать внедрения SQL. Я думаю, мне нужно что-то более мощное, я упоминал, что мне нужно получать результаты запросов из более чем одной таблицы, если я использую чистый SQL, все будет некрасиво. Итак, вы когда-нибудь пытались объединить полнотекстовую поисковую систему с Sails.js , что-то вроде: foragejs.net ?
2. Чтобы предотвратить внедрение SQL, я рекомендую следовать этой документации github.com/balderdashy/waterline-docs/blob/master/queries /…