Я новичок в node.js и pg-обещании, исходящих из фона программирования синхронизации, для чего требуется новое мышление.Синхронное программирование с использованием pg-prom
Я хотел бы начать с сценария запуска инициализации базы данных до основной логики программы.
Следуя этому примеру: 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;
});
ли мой код читаться либо:
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");
Я понимаю, что с последнее сообщение будет отображаться до удаления записей редактор
Update: После прочтения многочисленных статей по обещаниям и обратных вызовов Я понимаю, что пг-обещание использует цепочки будучи .then и .catch как для успеха и ошибок сценариев. Я и сейчас считаю, что я понимаю, что команда пг-обещание следует поместить в функции оболочки, такие как:
function initialiseDB() {
db.query("DELETE FROM records")
.then(function (data) {
// success;
})
.catch(function (error) {
// error;
});
}
Тогда внутри моего кода я бы вызвать функцию с помощью простой команды, которая будет запускать функцию асинхронно:
initialiseDB();
однако я до сих пор не уверен в том, как это понятие asychronous кодирования и обещаний вписывается в общую структуру программы, конечно, почти все в программе нужна будет инициализация быть завершены первым. Соответственно, вся программа не должна быть помещена в раздел «.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
Это плохая статья, чтобы даже предложить такую глупость. Обещания - лучший способ для написания асинхронного кода сегодня. –