javascript - 检查 mysql 数据库中单词的字符串。(即时的)
问题描述
我有一个存储单词的 mysql 数据库。现在我想检查一个字符串,看看它是否包含数据库中的一个或多个单词。
例如:
var desc = 'you are a stupid man';
db.connect((err) => {
if(err){
throw err;
}
console.log('Connected!');
let sql = 'SELECT `word` FROM `words`';
db.query(sql, (err, result) => {
if(err){
throw err;
}
if(desc.toLowerCase().includes(result)){
console.log('Dont use words like {word*}');
}
});
});
*单词/找到的单词。
实际上我只需要将mysql数据库的单词存储在一个数组中吗?但我只是不知道它是如何工作的。也许这是非常简单的事情,我只是没有进入我的脑海。
该方法还必须允许当我将一个新词插入数据库时,它也会被搜索,即使不重新启动脚本
问候,美国国立卫生研究院
解决方案
这是一个有趣的挑战,它教会了你数据库和应用程序的分离性质。
您的脚本(如果使用数据库)将自动提取新记录(使用查询),因此无需担心搜索所有项目。除非您将结果存储在变量/缓存中,但我假设您每次都使用新查询。
您可以保存一个表:banned_words
具有 ID 和 VARCHAR 列,然后在其中插入任何新的禁用词。
您可以在此处利用 MySQL,并使用以下查询:
SELECT * FROM words WHERE `word`='*{word}*'
我已经阅读了评论中的答案,它更具体到你的问题,如果你有一个字符串数组,在这里使用 IN 会是一个更好的选择
这可能不是确切的语法(自从我使用 SQL 以来已经有一段时间了),但是应该为您指明正确的方向。尽可能使用您的数据库,您可以直接使用它来查找您需要的确切数据(IE 是否存在单词?)。
您甚至可以确定使用类似查询存在多少行,而无需实际检索数据。(如果您基本上使用条件,则不需要变量中的数据)。
推荐阅读
- python - 用另一个数组的相同索引的值替换一个数组中的值?
- c++ - 如何在 std::thread 或 pthread 中执行或运行 shell 命令?
- c - unsigned long 的确切值范围是多少?
- android - ionic 3:无法使用相机插件显示图像
- sql-server - 创建动态 SQL 命令以包含“使用数据库 xyz”
- http - rdf4j lucene over http
- r - 我什么时候应该使用“as.xxx”v.“创建一个对象”?
- python - 如何将条目小部件(默认为字符串数据类型)的内容转换为整数?
- jquery - 如何使用 yajra 数据表 laravel 5.7 中的链接使列数据可点击
- javascript - Keypress 事件不会被 $().load("page.html") jQuery 激活