Makul bir çözüm bulabilirim. Yine de daha temiz bir şekilde yazılabileceğine eminim.
Bu örnekte Postgres kullanıyorum, cevap MySQL için biraz farklı olabilir. Zar zor bu cevap ödünç: Ben init fonksiyonu
var Sequelize = require('sequelize'),
pg = require('pg');
module.exports.init = function(callback) {
var dbName = 'db_name',
username = 'postgres',
password = 'password',
host = 'localhost'
var conStringPri = 'postgres://' + username + ':' + password + '@' + host + '/postgres';
var conStringPost = 'postgres://' + username + ':' + password + '@' + host + '/' + dbName;
// connect to postgres db
pg.connect(conStringPri, function(err, client, done) {
// create the db and ignore any errors, for example if it already exists.
client.query('CREATE DATABASE ' + dbName, function(err) {
//db should exist now, initialize Sequelize
var sequelize = new Sequelize(conStringPost);
callback(sequelize);
client.end(); // close the connection
});
});
};
sequelize çağrılmadan önce init fonksiyonu veritabanını yaratıyor database.js ise node-postgres create database
aşağıdakilere sahip. İlk önce postacılara bir bağlantı açar ve veritabanını oluşturur. Veritabanı zaten mevcutsa, görmezden geldiğimiz bir hata atılır. Oluşturulduktan sonra, sıralı hale getirmeye başlıyoruz ve geri aramaya gönderiyoruz. Önemli olarak, eğer veritabanı zaten mevcutsa, üzerine yazılmayacaktır.
Uygulama.js'de veritabanı örneğini alıp hangi modülün ona ihtiyacı olduğunu göndermek için bu durumda pasaport olurum. Benim durumumda
require('./server/config/database.js').init(function(database) {
require('./server/config/passport.js')(passport, database);
});
Bu özelliğin devam etmekte olduğunu sanmıyorum, ancak ben de böyle bir özellik istiyorum. Hiçbir şey, mevcut bir projeye başlamaktan ve uygulamayı çalıştırabilmeniz için önce bir veritabanı kurmaya gerek duymaktan daha rahatsız edici değildir. İş arkadaşlarımı herhangi bir kuruluma koymak istemiyorum. İndir ve git git yoludur. – Spencer