Javascript 使用NodeJs将文本文件名保存到数据库
我有个问题需要你的帮助。。 是否可以创建一个应用程序,该应用程序将获取目录中的所有Javascript 使用NodeJs将文本文件名保存到数据库,javascript,mysql,node.js,select,insert,Javascript,Mysql,Node.js,Select,Insert,我有个问题需要你的帮助。。 是否可以创建一个应用程序,该应用程序将获取目录中的所有.txt,然后将其文件名保存到数据库中,并且如果对文件名进行了验证,则不会在数据库中保存两次 这里有我的代码: const path = require('path') //mysql Connecion var mysql = require('mysql'); var con = mysql.createConnection({ host: "localhost", user: "root",
.txt
,然后将其文件名保存到数据库中,并且如果对文件名进行了验证,则不会在数据库中保存两次
这里有我的代码:
const path = require('path')
//mysql Connecion
var mysql = require('mysql');
var con = mysql.createConnection({
host: "localhost",
user: "root",
password: "",
database: "sms"
});
//con checking if the database is connected
con.connect(function(err) {
if (err) throw err;
//watchfile directory if there's new added file
var chokidar = require('chokidar');
var watcher = chokidar.watch('texts/', {ignored: /^\./, persistent: true});
//for getting the filename only
var fs = require('fs');
var testFolder = 'texts/';
watcher.on('add', function(filePath) {
var filename = path.basename(filePath);
var selectSql = 'SELECT count(*) FROM txtfilename WHERE filename="${filename}"';
con.query(selectSql, (err, results, fields) => {
// TODO: Catch the error
var matchingEntriesCount = results
if (matchingEntriesCount === 0) {
// TODO: Do your insert query
console.log('File', results, 'has been added');
var insertsql = "INSERT INTO txtfilename (filename) VALUES ('"+ results +"')";
con.query(insertsql, function (err, result) {
if (err) throw err;
console.log("1 record inserted");
});
}
});
});
watcher.on('unlink', function(path) {console.log('File', path, 'has been removed');});
});
我的代码现在可以读取将保存在目录中的所有文件,但我在选择和插入时遇到问题
我想使用select进行验证。用于不在数据库中插入相同的文件名
最后是插页。我想插入将保存到目录中的每个新文件名
希望有人能帮助我
我只是一个NodeJS新手我看到的第一个问题是,您只需要从watcher返回的路径
获取文件名。为此,我将使用packagebasename
方法
const path = require('path')
...
watcher.on('add', function(filePath) {
var filename = path.basename(filePath);
....
然后,您必须对表中与此文件名匹配的条目进行计数
var selectSql = `SELECT count(*) AS matchingEntriesCount FROM txtfilename WHERE filename="${filename}"`
con.query(selectSql, (err, results, fields) => {
// TODO: Catch the error
var matchingEntriesCount = results[0].matchingEntriesCount
if (matchingEntriesCount === 0) {
// TODO: Do your insert query
}
});
});
是否要添加文件名或完整(或相对)路径?仅添加文件名。。然后,我将调用所有文件名,然后保存所有文件名内容并合并为一个..Hi@Pierre,在文件路径上,我应该插入文件目录吗?。。因为现在有一个错误。。。TypeError:path.basename不是函数
Oups!将watcher中的path
更改为filePath
。在('add',函数(filePath){
上。我更新了我的答案。谢谢..现在我添加了插入查询,但在git bash上没有显示结果..我将更新我的code@RiyotaMiyagi我的代码(最后一部分)在获取计数(*)的方式上存在问题
value。我修复了它!我应该在提交答案之前测试一下我的代码。哇..谢谢你..这真的帮了我…我感谢你的努力…:)