私は挿入と更新のコードを2つの異なるファイルに保持しており、条件に基づいて常に挿入を最初に実行してから更新する必要があります。しかし、どういうわけか更新が最初に実行され、次に挿入されます
test.js : 簡略化されたコード
var pg = require('pg');
var uuid = require('node-uuid').v4;
var id = uuid().toString();
var conString = 'postgres://postgres:pass@127.0.0.1:5432/testdb';
// ------INSERT
pg.connect(conString, function(err, client, done) {
console.log('Executing Insert query');
client.query('insert into testdb (id,data,iscancelled) values ($1,$2,$3)',[id,'hello','no'], function(err, result) {
done();
if(err) { return console.error('error running query', err); }
console.log('finished executing Insert query');
});
});
// ------UPDATE
pg.connect(conString, function(err, client, done) {
console.log('Executing update query');
client.query("update testdb set iscancelled = 'yes' where id = $1",[id], function(err, result) {
done();
if(err) { return console.error('error running query', err); }
console.log('finished executing Update query');
});
});
出力
tom@tom:~$node test.js
Executing Insert query
Executing update query
finished executing Update query //WHY UPDATE FINISHES FIRST
finished executing Insert query
ノート :
この問題はasyncを使用することで簡単に解決できます。しかし、私の挿入コードと更新コードは別のファイルにあり、状況によっては更新コードが実行される可能性があります。したがって、async を使用したくありません。
問題
挿入クエリが最初に実行されるのに、更新が出力で最初に終了するのはなぜですか
何か不足していますか..?