如何解决“文件系统和mysql数据库之间的冲突”

时间:2019-06-21 10:58:33

标签: mysql node.js

我的nodejs程序具有2个功能:

  1. 将一些数据保存到数据库(mysql): foo1()
  2. 从现有文件中读取其他一些数据: foo2()

我意识到,当我在foo2()之前运行foo1()时,保存到数据库部分将正常工作。但是,如果将foo1()放在foo2()之后,则数据将永远不会保存到数据库中。这是一些代码。

我了解它是异步的,因此我将foo1()放在“ end”中。如果我以这种方式运行它,foo1()似乎已执行,但是它没有保存到mysql中。但是,如果我将foo1()放在A点之前,它将被保存。如果我将foo1()放在B点之后,它将不会将数据保存到数据库中,但是当我在vs代码中使用分步模式时,我可以看到它正在foo1()中运行。

这是我的foo2()。

//this is my foo2.
//point A
fs.createReadStream(file_location)
    .pipe(parse({ delimiter: ':' }))
    .on('data', function (csvrow) {
        input_data.push(parseFloat(csvrow[0]));
    })
    .on('end', function () {   //ensure my_update() is executed after done reading the file, so my_update() can use data from the file.
        my_update();  //foo1() is in my_update()
    });

//point B

这是foo1()

var mysql = require('mysql');
var save_to_db = function (best_nn, fitness, type) {

    var connection = mysql.createConnection({
        host: 'localhost',
        user: 'root',
        password: '',
        database: 'nodejstestdb'
    });
    connection.connect();

    var string_nn = JSON.stringify(best_nn.toJSON());

    var addSql = 'INSERT INTO mytable1(nn, type, fitness) VALUES(?,?,?)';
    var addSqlParams = [string_nn, type, fitness];

    connection.query(addSql, addSqlParams, function (err, result) {
        if (err) {
            console.log('[INSERT ERROR] - ', err.message);
            return;
        }

        console.log('--------------------------INSERT----------------------------');
        //console.log('INSERT ID:',result.insertId);        
        console.log('INSERT ID:', result);
        console.log('-----------------------------------------------------------------\n\n');
    });

    connection.end();
}



if save_to_db() is here, it is OK.
//this is my foo2.
//point A
fs.createReadStream(file_location)
    .pipe(parse({ delimiter: ':' }))
    .on('data', function (csvrow) {
        input_data.push(parseFloat(csvrow[0]));
    })
    .on('end', function () {   //ensure my_update() is executed after done reading the file, so my_update() can use data from the file.
        my_update();  //foo1() is in my_update()
    });

//point B

but if save_to_db() is here, it will save to db.


0 个答案:

没有答案