2014-06-06 15 views
5

Sails.js 0.10 RC7 kullanıyorum. Bir geliştirici bir projeyi kontrol edip çalıştırdığında, bazı verileri veritabanına önceden doldurmak isterim. Bu, uygulamanın çalıştırıldığı ilk seferde yapılmalıdır (ya da fikstüre yeni veriler eklendiğinde buna sahip olmalıyız).Bir Sails.js uygulaması kaldırıldığında ilk kez veri yükleme (fikstür)

Verileri config/bootstrap.js içine koyabilirdim ama anladığım kadarıyla, her seferinde sails lift çalıştırılıyor. Tamam, bunu yapıyorum ve bazı mantık yazıyor, ama eğer bununla ilgilenmek için zaten bir sözleşme varsa, onu kullanmak harika olurdu.

Sadece açık olmak gerekirse, özellikle test donanımlarına atıfta bulunmuyorum, ancak herhangi bir çalışma ortamında mevcut olduğu varsayılan bazı veriler.

Bu sorunu zaten çözen var mı?

+0

Böyle şeyler için veritabanı geçişlerini kullanmalısınız. Tüm veritabanı türleri için birçok kütüphane var, bu yüzden uygun olanı bulun. – tenbits

+0

Teşekkürler, evet, aradığım şey bu. İnsanların bunu Sails ile yapmak için hangi araçları kullandığını merak ediyorum. – newz2000

cevap

7

Bu sorunu, Balderdash numaralı telefondan yaptığımız hemen hemen her Yelken projesiyle karşı karşıyayız. Neredeyse her zaman, açıkladığınız gibi, verilerin zaten mevcut olup olmadığını algılamak için bootstrap numaralı veriyi oluşturarak ve mantıksal bir şekilde sarmakla çözüyoruz. Bir şey gibi:

User.find({admin: true}).exec(function(err, adminUser) { 
    // If an admin user exists, skip the bootstrap data 
    if (adminUser) { return cb(); } 
    // Otherwise, create data below... 
}); 

Doğru "yukarı/aşağı" veritabanı göçler kadar güçlü değil, ama biz verileri silerek çok uygun (ve şemasız) gelişimi için disk adapter, sadece veritabanını silmek için basit kullandığından yeni önyüklemeli bir kopyasını almak için dosyayı yeniden başlatın ve Sails'i tekrar kaldırın. Biz db göçlerinin gerektirdiği komplikasyonları nadiren özlüyoruz, ancak gerekli hale geldikleri durumlar olduğunu anlıyoruz. The Sails topluluğuna bazı çözümler getirerek yanıt verdik (işte one example).

+0

Bahşiş için teşekkürler, ben böyle bir şey yapmak ile tamam ve hafta sonu boyunca devs çalıştırmak için bir kabuk betiği yarattım. Halihazırda yerinde büyük bir çözüm varsa işten kaçınmak istedim. – newz2000

+0

Genel olarak bootstrap mantığını Sails proje yapısına nereye koyduğunuzu bilmek yardımcı olabilir. "Api/services" altında, root'daki ayrı dosya mı yoksa başka bir şey mi? En iyi olduğunu öğrendiğin kongreyi bilmek isterim. –

+1

@ AkseliPalén Sails, önceden bir '' boot/bootstrap.js' '' (http://sailsjs.org/documentation/anatomy/my-app/config/bootstrap-js) dosyasında bir bootstrap dosyası ile birlikte gelir. – sgress454

İlgili konular