モデルに追加したいデータが各行に含まれている多くの .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;
});
}
}
lodash の forEach メソッドを使用してループを反復しようとしましたが、両方のメソッドが Location.build() をスキップしているようです