为Sails.js应用程序初始化MongoDB数据库和用户的推荐方法是什么?

时间:2014-05-03 06:38:05

标签: node.js mongodb sails.js

我正在探索编写与Sails.js数据存储进行对话的mongodb应用程序。我已经完成了所有工作,但是我希望能够添加某种类型的初始化过程,该过程在npm install点运行,类似于rake admin:create中的Rails {1}}世界。

我猜这可以通过grunt任务以某种方式完成,但我想,在我推出自己的解决方案之前,我会问其他Sails / MongoDB用户他们实际上是什么在现实世界中做,看看是否出现了一致或最佳实践的解决方案。

2 个答案:

答案 0 :(得分:3)

Sails应用程序的数据库初始化通常在config/bootstrap.js file中完成。一个简单的例子就是:

module.exports = function(cb) {

    User.findOrCreate(
        // Search for user with "admin" flag
        {admin: true},
        // Create one if no such user is found
        {admin: true, name: 'Admin User', ...}
    ).exec(cb);

}

只有当Sails被解除时,引导程序才会运行,并且服务器不会启动,直到执行回调为止。如果您将任何内容作为回调的第一个参数发送,则会将其视为错误(与大多数标准节点回调一样),这将停止提升服务器。

请注意,您无法使用Waterline创建实际数据库。 Grunt任务可能是一个很好的地方,但您必须考虑Grunt无法访问Sails配置,因此您必须对要使用的数据库名称进行硬编码,或者找到一些其他方法使其可配置。这可能会对不同的环境产生影响(即开发与生产)。在我们Balderdash的项目中,我们通常会在签出代码后将数据库创建作为开发人员的手动步骤,然后使用bootstrap.js初始化数据。这允许开发人员使用config/local.js维护自己的数据库设置。

尽管如此,我可以看到设置Grunt任务以创建生产的数据库的价值,以便更轻松地将Sails应用程序部署到最终目的地。

答案 1 :(得分:1)

我个人认为sails.js团队使用Grunt是一个明智的决定。 Grunt为您需要的任何自动化提供可靠而灵活的解决方案。

我在我的sails.js项目中使用grunt,包括....

  • 从旧数据库导入数据
  • 编译sass(即使sails默认使用较少)
  • 编译coffeescript
  • 组装淘汰模板
  • 将索引加载到elasticsearch

你不会对使用Grunt感到失望,开始时很容易.... So get to it!