Mongoose的默认数据库数据

时间:2016-06-22 17:30:05

标签: javascript node.js mongodb express mongoose

我对node.js和MEAN堆栈很陌生,但我正在尝试构建一个应用程序。在此应用程序中,数据库中将存在一些默认数据。我希望在应用启动时发生此数据填充。因此,它基本上检查默认数据并在不存在时创建它。在一种情况下(设置),这是将存储本地设置的一条记录。在另一种情况下,它通过遍历数组向数据库添加几个默认记录。我把所有这些放在一个模块中并在server.js中调用它,但我有一种感觉,我做错了。看起来我开始陷入回调地狱,我想知道我是不是应该使用异步库来实现这个目标,还是应用其他东西。由于这些数据库调用在服务器启动之前实际上没有命中,因此可能是一个潜在的问题。

正如我所说,我是node.js的新手,所以任何输入都会很棒。下面是模块和启动应用程序时在server.js中调用的两个函数。

谢谢!

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'
    }
]

1 个答案:

答案 0 :(得分:0)

我明白了!这里有很多,但我基本上了解了承诺,它改变了一切!

^((?:0|[1-9]\d*)(?:\.\d{1,2})?)$