2015-08-20 2 views
0

Je suis en train de faire la requête suivante dans sequelize:Retirer guillemet simple requête brute dans sequelize

mysql> SELECT * FROM articles WHERE MATCH (title,body) 
    -> AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE); 

c'est ma tentative:

var rawQuery = "SELECT * FROM users WHERE MATCH (email) AGAINST ('?*' IN BOOLEAN MODE)"; 

       return sequelize.query(rawQuery, { 
         replacements: [text], 
         type: sequelize.QueryTypes.SELECT 
        }).then(function(user) { 
         return user; 
       }); 

Le problème est que je reçois une erreur, car ce que je passe une chaîne contient des guillemets simples et ceci est l'erreur que je suis:

Executing (default): SELECT * FROM users WHERE MATCH (email) AGAINST (''test'*' IN BOOLEAN MODE) 
Unhandled rejection SequelizeDatabaseError: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'test'*' IN BOOLEAN MODE)' at line 1 

savez-vous qui est le moyen de le réparer?

Répondre

1

Essayez par échapper aux citations:

var rawQuery = "SELECT * FROM users WHERE MATCH (email) AGAINST (\"?*\" IN BOOLEAN MODE)"; 

return sequelize.query(rawQuery, { 
     replacements: [text], 
     type: sequelize.QueryTypes.SELECT 
    }).then(function(user) { 
     return user; 
}); 
+0

Disons que cela a fonctionné, mais sommes-nous sûrs que la chaîne 'test' correspondra avec le test dans la base de données ou il ira chercher "test" – Mazzy

0

Qu'en est-il ceci:

var rawQuery = 'SELECT * FROM users WHERE MATCH (email) AGAINST ("?*" IN BOOLEAN MODE)';