Używam NodeJS, Express i MySQL dla mojego projektu i chcę używać z nim regału ORM Bookshelf.Jak zapewnić połączenie Knex w nodejs
Regał wykorzystuje Knex do wysyłania zapytań, modelowania i sugerowania konfiguracji połączenia DB przez Knex (http://bookshelfjs.org/#installation).
Mam problem z nawiązaniem udanego połączenia DB z Knex. Chcę uruchomić serwer tylko wtedy, gdy połączenie DB zakończy się powodzeniem, ale wygląda na to, że nie oferuje niczego po nawiązaniu połączenia (bez obietnicy lub właściwości).
To jest kod, którego używałem.
import _knex from "knex"; // npm install knex --save
import _bookshelf from "bookshelf"; // npm install bookshelf --save
let knex = _knex({
client: "mysql",
connection: {
host: "127.0.0.1",
database: process.env.DB,
user: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD
},
debug: true
});
let bookshelf = _bookshelf(knex);
module.exports.knex = knex;
module.exports.bookshelf = bookshelf;
Więcej referencyjny: Istnieje inny ORM nazwie Sequelize i zapewnia sequelize.authenticate()
które zwracają obietnicy i może być używany jako (http://docs.sequelizejs.com/en/latest/api/sequelize/#authenticate-promise)
sequelize.authenticate()
.then(() => {
console.log("Db successfully connected");
app.listen(port,() => console.log(`App started at: ${port}`));
})
.catch(err => console.log('Unable to connect to the database'));
Jedynym rozwiązaniem można myślę, jest do wykonywania surowe zapytanie, takie jak USE {DB_NAME}
i użyj jego danych wyjściowych, aby zdecydować, czy uruchomić serwer, czy nie. Czy to rozwiązanie jest wystarczająco dobre?