繁体   English   中英

node.js mysql无法插入

[英]node.js mysql failing to insert

我搞砸了node.js,使用Faker,下划线,mysql和randy库将一些测试数据添加到Web应用程序中。

到目前为止一切顺利-但在我的循环中,mysql调用每次都会失败,但是也不会生成任何错误。 我有些困惑:

var sql = 'SELECT id FROM mytable WHERE 1';
client.query(sql, function(err, rows, fields){
    // loop through results
    _.each(rows, function (v, i){
        // get the insert id
        var id = v.id; 
        console.log (id); // prints valid ID            
        // generate other data
        var stuff_count = randy.randInt(0,12);
        _(stuff_count).times(function(n){
            var sql = 'INSERT INTO other_table (linked_id, item_id) VALUES ('+id+','+randy.randInt(1,50)+')';
            console.log(sql); // prints sql
            client.query(sql, function(err, rows, fields) {
              console.log(sql); // prints nothing
              if (err){
                console.log(sql); // prints nothing
                throw err; // prints nothing
              }
        });
    });
});

循环逻辑工作正常,并且一直到达sql应该对other_table执行INSERTother_table -但是拖尾mysql日志显示没有任何东西触及数据库,并且client.query块内的任何调试语句都没有client.query任何事情,无论成功还是失败。

假设您只是在独立运行此代码,则代码可能在插入之前就已经完成。

在_(stuff_count).times(...)之后放置setTimeout(...,10000)

通过使用_()。times(),可将所有插入插入队列,但不等待完成。 您应该使用控制流库来确保您等待所有插入完成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM