Javascript 使用Nodejs在数据库上自动保存文件名

Javascript 使用Nodejs在数据库上自动保存文件名,javascript,mysql,node.js,Javascript,Mysql,Node.js,我和NodeJS有麻烦。我想创建一个服务器端脚本,它将把一个新文件的文件名保存到它的目录中,并自动保存到数据库中 这是我的密码: const path = require('path') //mysql Connecion var mysql = require('mysql'); var con = mysql.createConnection({ host: "localhost", user: "root", password: "", database: "sms"

我和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

您有什么问题?我想将text文件夹中的所有新文件名保存到数据库中,您的代码做什么?还是不行?现在我的代码可以读取所有新文件并将其文件名保存到数据库中。。但我想要的是,当文本文件夹中保存了一个新文件时,它会自动将其文件名保存到数据库中。。现在我需要刷新我的节点js来保存所有的新文件,而且我在验证相同的文件名时遇到了问题。。