私はnode.jsとpg-promiseの新機能です。同期プログラミングのバックグラウンドから来ています。新しい考え方が必要です。pg-promiseを使った同期プログラミング
メインプログラムロジックの前にデータベースの初期化を実行するシナリオから始めます。この例に
:
db.query("DELETE FROM records")
.then(function (data) {
// success;
console.log("This is where all my main logic goes");
})
.catch(function (error) {
// error;
});
それともとして読んでしまう::私の理解では、とのことです
db.query("DELETE FROM records")
.then(function (data) {
// success;
})
.catch(function (error) {
// error;
});
console.log("This is where all my main logic goes");
https://github.com/vitaly-t/pg-promise/wiki/Learn-by-Example#simple-select
db.any("select * from users where active=$1", [true])
.then(function (data) {
// success;
})
.catch(function (error) {
// error;
});
私のコードは、どちらかと読んでいました後者はレコードが削除される前に表示されるed。
更新: 約束とコールバックに多数の記事を読んだ後、私はPG-約束があること.thenと成功とエラーのシナリオの両方のための.catch連鎖を使用していることを理解しています。
:その後、私のコード内から、私は非同期機能を実行します簡単なコマンドで関数を呼び出しますfunction initialiseDB() {
db.query("DELETE FROM records")
.then(function (data) {
// success;
})
.catch(function (error) {
// error;
});
}
:私も、今、私はPG-約束コマンドのような機能ラッパー内に配置する必要があります理解して信じています
initialiseDB();
しかし、この非同期コーディングと約束がプログラムの全体構造にどのように適合するかはまだ分かりませんが、プログラムのほぼすべてが初期化を最初に完了する必要があります。したがって、プログラム全体を関数の ".then"セクションに配置する必要はありませんか?すなわち、トップレベルの唯一のコードは事実上intialiseDB()関数であろうか?
// Start of code here
var pgp = require('pg-promise')();
//Configure the database connection
var config = {
user: 'username', //env var: PGUSER
database: 'database', //env var: PGDATABASE
password: 'password', //env var: PGPASSWORD
};
var db = pgp(config);
function initialiseDB() {
db.query("DELETE FROM records")
.then(function (data) {
// This is where the main program logic goes after this line;
})
.catch(function (error) {
// error;
});
}
// Commence the program here
initialiseDB();
これは最初のものです。また、約束を正しく使用することについて読むべきであり、今日[PromiseJS](https://www.promisejs.org/)から始めて、それに関する多くの情報があります。 –
ありがとう、すべて私に新しい。 「初期のノードでは、「約束」という機能を試して、非同期コードをより線形的に見せるためにいくつかの機能を追加しました。それはいくつかの理由からノードのコアから抜け出しました。 "https://github.com/maxogden/art -of-node/blob/master/readme.md – Dercni
これは悪い記事で、そのようなナンセンスを示唆することさえできます。今日、非同期コードを書くための最善の方法は約束です。 –