私はnode.jsとMEANスタックの新機能ですが、アプリケーションを構築しようとしています。このアプリケーションでは、データベースにデフォルトのデータがいくつかあります。私は、このデータ集団が、アプリケーションの起動時に発生したいと思います。したがって、基本的にデフォルトのデータをチェックし、デフォルトのデータがない場合は作成します。あるケース(設定)では、これはローカル設定が保存される1つのレコードです。それ以外の場合は、配列に移動することでデータベースにいくつかのデフォルトレコードが追加されます。私はこのすべてをモジュールに入れ、server.jsでそれを計算しますが、私はこれが間違っていると感じています。私はコールバック地獄に入るようになっているように見えます。私は、このことや約束などのために非同期ライブラリを使うべきかどうか疑問に思っています。これらのdbコールは、サーバが起動する前に実際にはヒットしないので、潜在的な問題になる可能性があります。Mongooseのデフォルトのデータベースデータ
私が言ったように、私はnode.jsを初めて使うので、どんな入力も素晴らしいでしょう。以下は、アプリケーション起動時にserver.jsで呼び出されるモジュールと2つの関数です。
感謝!
var config = require('./config');
var Settings = require('./app/models/settings')
var Source = require('./app/models/source');
module.exports =
{
settings: function() {
//check to see if any records exists
Settings.find({}, function (err, settings) {
if (err)
return (err);
if (settings.length == 0) {
//populate default settings
var defaultSettings = new Settings();
console.log(defaultSettings);
defaultSettings.save(function(err){
return (err);
});
}
else {
return settings[0];
}
});
},
sources: function() {
Source.find({}, function (err, sources) {
if (sources.length == 0) {
defaultSources.forEach(function (item, index) {
s = new Source();
s.domain = item.domain;
s.loginPage = item.loginPage;
s.scanUrl = item.scanUrl;
s.sourceType = item.sourceType;
s.cssSelect = item.cssSelect;
s.save(function (err) {
if (err) return err;
});
});
}
});
}
}
var defaultSources = [
{
domain: 'http://tehparadox.com',
loginPage: 'http://tehparadox.com',
scanUrl: 'http://tehparadox.com/forum/f63/tv-shows-2010-2011-hd-1439182/',
sourceType: 'TV and Movies',
cssSelect: '.post a'
},
{
domain: 'http://tehparadox.com',
loginPage: 'http://tehparadox.com',
scanUrl: 'http://tehparadox.com/forum/f63/tv-shows-2010-2011-hd-1439182/',
sourceType: 'TV and Movies',
cssSelect: '.post a'
},
{
domain: 'http://tehparadox.com',
loginPage: 'http://tehparadox.com',
scanUrl: 'http://tehparadox.com/forum/f63/tv-shows-2010-2011-hd-1439182/',
sourceType: 'Index',
cssSelect: '.post a'
},
{
domain: 'http://tehparadox.com',
loginPage: 'http://tehparadox.com',
scanUrl: 'http://tehparadox.com/forum/f63/tv-shows-2010-2011-hd-1439182/',
sourceType: 'Search',
cssSelect: '.post a'
}
]
私はそれをむしろ最初に実行されますsite.com/configのようなスタートアップconfigページを作成し、そのようにしないだろう、ゴースト構成は –
HIする@ jack.the.ripperをどのように動作するかの同じ考えです!私は実際にこれを最初に試みました、多分私はもう少しそれをチェックします。ありがとう! – user576838