我在使用 NodeJS 时遇到了问题。我想创建一个服务器端脚本,它将新文件的文件名获取到其目录并自动将其保存到数据库。
这是我的代码:
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(filename) AS matchingEntriesCount FROM txtfilename WHERE filename="${filename}"';
con.query(selectSql, (err, results, fields) => {
// TODO: Catch the error
console.log(err);
var matchingEntriesCount = results[0].matchingEntriesCount
if (matchingEntriesCount == 0) {
console.log('File', filename, 'has been added');
// TODO: Do your insert query
var insertsql = "INSERT INTO txtfilename (filename) VALUES ('"+ filename +"')";
con.query(insertsql, function (err, result) {
if (err) throw err;
console.log("1 record inserted");
});
}
});
});
});
希望有人能帮助我解决我的问题..谢谢。
最佳答案
watcher
是函数 connect
的局部变量,因此在退出函数时会被删除。如果您希望代码正常工作,则需要将 watcher 设置为全局变量。
无论如何,当您调用 con.query
时,连接都会隐式建立,因此您可以完全删除 con.connect
。
关于javascript - 使用 Nodejs 自动将文件名保存在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50016191/