使用nodejs将文本文件名保存到数据库

83qze16e  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(415)

我有个问题需要你的帮助。。有没有可能创建一个应用程序来获取所有 .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 以及 INSERT .
我想使用select进行验证。不在数据库中插入相同的文件名。
最后是插页。我想插入将保存到目录中的每个新文件名。
希望有人能帮我。
我只是个新手

3zwtqj6y

3zwtqj6y1#

我看到的第一个问题是,您只需要从 path 从观察者那里回来。我将使用路径包 basename 方法。

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
        }
    });
});

相关问题