Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何向Sequelize模型添加大量数据?_Mysql_Node.js_Sequelize.js - Fatal编程技术网

Mysql 如何向Sequelize模型添加大量数据?

Mysql 如何向Sequelize模型添加大量数据?,mysql,node.js,sequelize.js,Mysql,Node.js,Sequelize.js,我有许多.txt文件,其中每一行都有一些我想添加到模型中的数据,以便可以随时进行查询。问题是没有执行任何“插入”查询,可能是由于库的异步性 以下是我所拥有的: // Connect to DB // Set up Model // Model.sync() // first for loop (for each .txt) // second for loop (nested) (for each line in the .txt) // in second for loop: Model.c

我有许多.txt文件,其中每一行都有一些我想添加到模型中的数据,以便可以随时进行查询。问题是没有执行任何“插入”查询,可能是由于库的异步性

以下是我所拥有的:

// Connect to DB
// Set up Model
// Model.sync()

// first for loop (for each .txt)
// second for loop (nested) (for each line in the .txt)
// in second for loop: Model.create(data);
如何确保每个数据对象都成功添加到数据库中

代码如下:

var Location = sequelize.define('Location', {
  name: Sequelize.STRING,
  country: Sequelize.STRING,
  lat: Sequelize.STRING,
  long: Sequelize.STRING
});
Location.sync().success(function(){
  for (var i = 0; i < txts.length; i++){
    var txt = txts[i],
      country = txt.substr(0, txt.indexOf('.')),
      data = fs.readFileSync(dir +"/" + txt, 'utf-8'),
      locations = data.split('\n');

    for (var j =1; j < locations.length; j++){
      var loc = locations[j],
        chunks = _.without(loc.split('\t'), ''),
        lat = chunks[3],
        long = chunks[4],
        name = chunks[16]

      Location.build({
        country: country,
        lat: lat,
        long: long,
        name: name
      })
        .save()
        .success(function(){
          console.log('success');
        })
        .error(function(err){
          if (err) throw err;
        });
    }

 }
var Location=sequelize.define('Location'){
名称:Sequelize.STRING,
国家/地区:Sequelize.STRING,
lat:Sequelize.STRING,
long:Sequelize.STRING
});
Location.sync().success(函数()){
对于(变量i=0;i

我曾尝试使用lodash的forEach方法来迭代循环,但这两种方法似乎都跳过了Location.build()

很难说没有看到实际的代码,但是请尝试对循环使用或(最好)使用或async.auto,以便在执行内部循环之前实际完成外部循环。

我添加了我拥有的代码。async.each会做与u.forEach相同的事情吗?异步不是问题所在,不是解决方案吗?我相信这应该可以解决问题th async.eachSeries。关于Node,很难理解的一点是,如果不使用某种形式的回调或异步函数,Node将直接通过外部和内部循环,然后进入下一个项目,而不等待保存。我建议从3个文件开始,并添加console.log语句以查看这会让你大吃一惊的。